redis切换database(redis 怎么指定 数据库编号)

本文目录
- redis 怎么指定 数据库编号
- redis默认是0号库,怎么指定使用库
- redis 怎么切换到一个数据库
- 集群redis哨兵模式连接方式,解决database不生效问题(附源码)
- redis库是什么
- 如何同时使用一个redis服务的多个database
- Redis的持久化机制 (RDB&AOF&混合模式)
- window怎么更改redis数据库位置
- 【redis】redis 手动切换主从
- 四、Redis数据快速恢复之RDB(Redis DataBase)
redis 怎么指定 数据库编号
我知道springboot中,指定数据库编号,是在配置文件中指定的,希望可以解决你的问题。
redis默认是0号库,怎么指定使用库
poolConfig: jedis配置信息,如:maxActive,maxIdle,minIdle,maxWait
host: ip
port: 端口
timeout:超时时间,默认为2000
password:密码,可为null
database:第几个数据库,默认:0
更换这个构造函数,就可以设置database了!
redis 怎么切换到一个数据库
语法
redis Select 命令基本语法如下:
redis 127.0.0.1:6379》 SELECT index
可用版本
》= 1.0.0
返回值
总是返回 OK 。
实例
redis 127.0.0.1:6379》 SET db_number 0 # 默认使用 0 号数据库OK redis 127.0.0.1:6379》 SELECT 1 # 使用 1 号数据库OK redis 127.0.0.1:6379(nil)
集群redis哨兵模式连接方式,解决database不生效问题(附源码)
公司里面项目基本都使用哨兵模式
注意事项:
1 引入pom依赖
2 添加redis哨兵配置,database主动设置,才会生效
3 application.yml配置
4 项目目录
5 启动测试连接
可以看到redis.clients.jedis.JedisSentinelPool : Created JedisSentinelPool to master at 10.10.195.249:6379已经启动了
作为程序员第 140 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha ...
redis库是什么
在 Redis 中,库(Database)是一种用于逻辑上隔离不同数据的概念。Redis 允许用户在同一个 Redis 实例中创建多个库,每个库都有一个唯一的数字索引(0-15)。默认情况下,Redis 实例中包含 16 个库,用户可以使用 SELECT 命令来选择不同的库,例如:
SELECT 0 # 选择索引为 0 的库SET key value # 在当前选择的库中设置键值对
在上面的例子中,SELECT 命令用于选择索引为 0 的库,然后在该库中设置键值对。如果不使用 SELECT 命令,Redis 会默认使用索引为 0 的库。
需要注意的是,Redis 库并不是严格意义上的物理隔离,多个库之间共享相同的物理资源,包括内存、CPU 和磁盘等。因此,如果多个库中存储的数据量非常大,会对 Redis 实例的整体性能产生影响。另外,多个库之间也可以相互访问,如果两个库中都有相同的键名,可能会导致数据冲突。因此,在使用 Redis 库时需要注意控制库的数量和大小,并进行合理的数据管理和访问控制。
如何同时使用一个redis服务的多个database
部分重同步通过复制偏移量,复制积压缓冲区、服务器运行ID三个部分来实现。
在复制操作刚开始的时候,从服务器会成为主服务器的客户端,并通过向主服务器发送命令请求来执行复制步骤,而在复制操作的后期,主从服务器会相互成为对方的客户端。
主服务器通过向从服务器传播命令来更新从服务器的状态,保持主从服务器一致,而从服务器则通过向主服务器发送命令来进行心跳检测,以及命令丢失检测。
Redis的持久化机制 (RDB&AOF&混合模式)
RDB(Redis DataBase,快照方式) 是将某一个时刻的内存数据,以二进制的方式写入磁盘。 AOF(Append Only File,文件追加方式) 是指将所有的操作命令,以文本的形式追加到文件中。
RDB
RDB 默认的保存文件为 dump.rdb,优点是以二进制存储的,因此 占用的空间更小 、数据存储更紧凑,并且与 AOF 相比,RDB 具备 更快的重启恢复能力 。
AOF
AOF 默认的保存文件为 appendonly.aof,它的优点是存储频率更高,因此 丢失数据的风险就越低 ,并且 AOF 并不是以二进制存储的,所以它的存储信息更易懂。缺点是 占用空间大 , 重启之后的数据恢复速度比较慢 。
混合
在 Redis 4.0 就推出了混合持久化的功能。Redis 混合持久化的存储模式是, 开始的数据以 RDB 的格式进行存储 ,因此只会占用少量的空间, 并且之后的命令会以 AOF 的方式进行数据追加 ,这样就可以减低数据丢失的风险,同时可以提高数据恢复的速度。
Fork
Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。Fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程。
AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制,当AOF文件的大小超过所设定的阈值时( 默认值 64M ),Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集。Redis 会fork出一条新进程来将 文件重写Rewrite (也是先写临时文件最后再rename),遍历新进程的内存中数据,每条记录有一条的set语句。重写aof文件的操作,并没有读取旧的aof文件, 而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,这点和快照有点类似。
window怎么更改redis数据库位置
最近用php开发了一个redis程序,当要部署到服务器的时候问题就出来了。redis默认是在linux服务器中运行的,微软开发小组针对redis也做出了相应的支持。那么redis一般怎么在windows系统中运行的呢?我一般是通过开始 》 运行 》 cmd 》 命令提示行中,然后切换到redis所在的文件目录中(D: cd redis)。输入redis的服务命令启动redis(redis-server.exe)。这样的话redis就会一直在命令提示行中运行,当关闭了cmd命令提示行的时候redis-server也相应的被关闭了。
那么我们如何让redis的服务程序服务器一开机就自动运行呢?我们可以将redis-server.exe的程序加入到系统服务中。怎么才能将一个程序加入windows的服务中呢?我们可以通过windows的sc命令将一个程序加入到windows的系统服务中。
sc命令,在注册表和服务数据库中创建服务项。语法如下。
sc <server> create [service name] [binPath= ] <option1> <option2>...
下面我们仿照此语法写一个redis加入到系统服务中的命令。
sc create redis binPath= D:\redis\redis-server.exe start= auto
我们将上面的语句拿到cmd命令提示行中运行,在windows服务管理中就可以看到redis服务成功加入到系统服务中了。
【redis】redis 手动切换主从
在redis节点:
$ redis-cli -h xx.xx.xx.xx -p XX -a ’XX’ shutdown
不要直接关闭redis进程,使用 shutdown ,能在进程关闭前持久化内存中的数据
待主从切换完毕后:
$ systemctl start redis-server
架构: 3台服务器,1主2从3哨兵,每台服务有一个主(或从))和哨兵。
主(哨兵1):192.168.1.11
从(哨兵2):192.168.1.12
从(哨兵3):192.168.1.13
线上redis master异常关机之后重启, 发现redis哨兵模式下 三个节点都是slave,无法选择出主。
登录192.168.1.11(master),关闭redis进程
$ redis-cli -h 192.168.1.11 -p 6379 -a ’XX’ shutdown
登录192.168.1.12(new master)
$ redis-cli -h 192.168.1.12 -p 6379 -a ’XX’ slaveof no one
$ redis-cli -h 192.168.1.12 -p 6379 -a ’XX’ config set slave-read-only no
登录192.168.1.13(slave)
$ redis-cli -h 192.168.1.12 -p 6379 -a ’XX’ config set masterauth ’XXX’
$ redis-cli -h 192.168.1.12 -p 6379 -a ’XX’ slaveof 192.168.1.12 6379
启动192.168.1.11 redis进程,成为192.168.1.12(new master)的slave
$ systemctl start redis-server
$ redis-cli -h 192.168.1.12 -p 6379 -a ’XX’ config set masterauth ’XXX’
$ redis-cli -h 192.168.1.12 -p 6379 -a ’XX’ slaveof 192.168.1.12 6379
Redis的主从切换
***隐藏网址***
redis主从宕机切换 SLAVEOF
***隐藏网址***
手动调整master-slave切换
***隐藏网址***
redis 主从备份(手动切换)
***隐藏网址***
Redis的主从切换
***隐藏网址***
四、Redis数据快速恢复之RDB(Redis DataBase)
内存快照(将内存中的数据在某一时刻的状态记录至磁盘中) 。现实可以理解为拍照。
想象下如果100个人(数据)在拍照,那首先想到的问题这100个人给谁拍照?拍照的同时如果有人"动"了怎么办?基于这些场景繁衍以下问题:
全量快照 ,一次性记录所有数据,保证数据的完整性
Redis 两个命令生成 RDB 文件, save 和 bgsave。
save:在主线程中执行,导致阻塞;
bgsave:创建一个子进程,用于写入 RDB 文件,避免主线程阻塞。(Redis默认配置项使用bgsave)。
采用bgsave因为Redis会fock一个子进程处理,所以读肯定没问题,修改是怎么处理的呢?
Redis借助操作系统提供的写时复制技术(Copy-On-Write, COW),在执行快照的同时,正常处理写操作。具体流程:
主线程 fork 出 bgsave 子进程后,bgsave 子进程实际是复制了主线程的页表。这些页表中,就保存了在执行 bgsave 命令时,主线程的所有数据块在内存中的物理地址。这样一来,bgsave 子进程生成 RDB 时,就可以根据页表读取这些数据,再写入磁盘中。如果此时,主线程接收到了新写或修改操作,那么,主线程会使用写时复制机制。具体来说,写时复制就是指,主线程在有写操作时,才会把这个新写或修改后的数据写入到一个新的物理地址中,并修改自己的页表映射。
如图:
bgsave 子进程复制主线程的页表以后,假如主线程需要修改虚页 7 里的数据,那么,主线程就需要新分配一个物理页(假设是物理页 53),然后把修改后的虚页 7 里的数据写到物理页 53 上,而虚页 7 里原来的数据仍然保存在物理页 33 上。这个时候,虚页 7 到物理页 33 的映射关系,仍然保留在 bgsave 子进程中。所以,bgsave 子进程可以无误地把虚页 7 的原始数据写入 RDB 文件。
一、频繁将全量数据写入磁盘,会给磁盘带来很大压力,多个快照竞争有限的磁盘带宽,前一个快照还没有做完,后一个又开始做了,容易造成恶性循环。
二、bgsave 子进程需要通过 fork 操作从主线程创建出来。虽然,子进程在创建后不会再阻塞主线程,但是,fork 这个创建过程本身会阻塞主线程,而且主线程的内存越大,阻塞时间越长。
快照的恢复速度快,频率无法把控,频率太低,宕机,丢失数据比较多。频率太高,产生额外开销。
混合使用 AOF 日志和内存快照 ,内存快照以一定的频率执行,在两次快照之间, 使用 AOF 日志记录 这期间的所有命令操作。

更多文章:
跷二郎腿太低好吗?想要通过贴墙站改正二郎腿影响的话,有哪些要点需要注意
2026年10月11日 05:10
易语言点击js按钮(易语言网页填表怎样点击链接为“javascript:void(0)“的按钮)
2026年10月11日 03:00
compare with造句(用compared with和compared to造句)
2026年10月10日 23:30
tensorflow与keras对应版本(为什么tensorflow2.8没有keras)
2026年10月10日 22:10
maven仓库jar网站(如何在maven仓库中添加jar包)
2026年10月10日 19:50





