Redis高级实用特性
Redis 安全
我们可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全。
查看是否设置了密码验证:1
2
3127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务。
临时修改密码(redis服务重启后不再生效)1
2
3
4
5127.0.0.1:6379> CONFIG set requirepass "runoob"
OK
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "runoob"
配置文件为Redis添加密码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22修改配置文件
sudo vim /etc/redis/redis.conf
设置:requirepass redis的密码
# requirepass foobared
requirepass abc123
重启服务
sudo service redis restart
登录(两种)
1.# ./redis-cli -a 密码 //连接时指定密码来进行授权
2.redis-cli 进入后发现操作不了时
auth 密码
OK
---------------------
windows 下设置密码生效
修改配置文件
启动服务 加载配置文件redis-server redis.conf \(加载一次即可\)
启动客户端
Redis主从复制
操作步骤:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
211.先将linux虚拟机关闭,之后克隆一个。
2.启动两个虚拟机:master(主)和slave(从)
3. 在slave(从)中配置一下ip地址
\# ifconfig eth0 192.168.128.229
\# ping 一下看看通不通。
4. 配置从机
进入:配置文件
slaveof 192.168.128.228 6379 //配置连接主机的Redis的ip和端口
masterauth 密码 //配置连接密码
最后启动slave(从)机的Redis服务。
其他:可以通过info命令中的role属性查看自己角色是master、slave
Redis事务
1 | >multi //开启一个事务 |
Redis乐观锁
1 | Redis Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断 |
Redis持久化机制(通过修改配置文件做设置)
1 | 1.snapshotting(快照)默认方式 |
Redis发布订阅
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
1 | 我们创建了订阅频道名为 redisChat: |
Redis配置虚拟内存
和大多NoSQL数据库一样,Redis同样遵循了Key/Value数据存储模型。在有些情况下,Redis会将Keys/Values保存在内存中以提高数据查询和数据修改的效率,然而这样的做法并非总是很好的选择。鉴于此,我们可以将之进一步优化,即尽量在内存中只保留Keys的数据,这样可以保证数据检索的效率,而Values数据在很少使用的时候则可以被换出到磁盘。
在实际的应用中,大约只有10%的Keys属于相对比较常用的键,这样Redis就可以通过虚存将其余不常用的Keys和Values换出到磁盘上,而一旦这些被换出的Keys或Values需要被读取时,Redis则将其再次读回到主内存中。1
2
3
4
5
6
7在redis配置文件中设置
vm-enabled yes #开启vm功能
vm-swap-file /tmp/redis.swap #交换出来的value保存的文件路径
vm-max-memory 1000000 #redis使用的最大内存上限
vm-page-size 32 #每个页面的大小32字节
vm-pages 134217728 #最多使用多少页面
vm-max-threads 4 #用于执行value对象换入患处的工作线程数量
持续中。。。。。。