Redis:Redis使用注意事项
2020-10-19 本文已影响0人
dex0423
修改 redis.conf 前先做备份
- 修改之前先备份一份默认的初始化配置文件,以备不时之需。
Redis 字符串
- 最大字符串为512M,但是生产环境一般不用大字符串。
Redis 添加元素
- 江湖规矩一般从左端Push,右端Pop,即LPush/RPop。
set 无序集合
- set 无序集合,主要应用于
去重、过滤
; - SPOP:
-- spop # 从集合随机移除一个成员,并将其返回
; - SREM:
-- srem# 在name对应的集合中删除某些值
; - SCARD:
-- scard 获取name对应的集合中元素个数
; - SDIFF:
-- sdiff 在第一个name对应的集合中且不在其他name对应的集合的元素集合 - SDIFFSTORE:
-- sdiffstore # 获取第一个name对应的集合中且不在其他name对应的集合,再将其新加入到dest对应的集合中 - SINTER:
-- sinter # 获取多个name对应集合的并集 - SINTERSTORE:
-- sinterstore # 获取多一个name对应集合的并集,再讲其加入到dest对应的集合中 - SISMEMBER:
-- sismember # 检查value是否是name对应的集合的成员 - SMEMBERS:
-- smembers # 获取name对应的集合的所有成员 - SMOVE:
-- smove # 将某个成员从一个集合中移动到另外一个集合 - SRANDMEMBER:
--srandmember# 从name对应的集合中随机获取 numbers 个元素
,不会删除 - SUNIONSTORE:
--sunionstore# 获取多一个name对应的集合的并集,并将结果保存到dest对应的集合中 - SSCAN:
--sscan# 同字符串的操作,用于增量迭代分批获取元素
,避免内存消耗太大
zset 有序集合
- zset 有序集合,主要应用于
排名、排序
;
Redis 设置密码
- 在 redis 文件夹打开
conf 配置文件
,ctrl + F
调出查找框,查找requirepass foobared
,找到后将这一行注释掉,在下方添加requirepass XXX(你要设置的密码)
; - 重启 redis 密码即可生效;
Redis 服务化运行
- 以 Windows 为例,cmd 命令行进入 redis 文件夹,执行下面的命令即可安装 redis 服务:
redis-server --service-install redis.windows-service.conf --loglevel verbose
- 启动 redis 服务
redis-server --service-start
- 关闭 redis 服务
redis-server --service-stop
Redis 设置远程连接
- 在 Redis 文件夹打开
conf 配置文件
,ctrl + F
调出查找框, - 查找
bind 127.0.0.1
,找到后将这一行注释掉,在下方添加bind 0.0.0.0
; - 查找
protected-mode yes
,找到活将这一行注释掉,在下方添加protected-mode no
; - 重启 redis 即开启远程访问;
redis 数据持久化策略
redis 内存空间设置
- 进入 redis 文件夹,打开
conf 配置文件
,ctrl + F
调出查找框, - 查找
maxmemory
,找到后修改maxmemory
后面的数值,例如:2000mb
表示2G
;
redis 最大连接数
redis key 超时设置
- 当client主动访问key会先对key进行超时判断,过时的key会立刻删除。如果clien永远都不再get那条key呢? 它会在Master的后台,每秒10次的执行如下操作: 随机选取100个key校验是否过期,如果有25个以上的key过期了,立刻额外随机选取下100个key(不计算在10次之内)。可见,如果过期的key不多,它最多每秒回收200条左右,如果有超过25%的key过期了,它就会做得更多,但只要key不被主动get,它占用的内存什么时候最终被清理掉只有天知道。在主从复制环境中,由于上述原因存在已经过期但是没有删除的key,在主snapshot时并不包含这些key,因此在slave环境中我们往往看到dbsize较master是更小的。
redis 出现异常时的持久化配置
- 默认情况下,redis 出现异常时就会中断持久化写入操作,
conf 配置文件
中配置项stop-writes-on-bgsave-error
默认设置为yes
,表示redis 遇到错误时终止写入
; - 这种设置下,当 redis 出现异常的时候,就会出现如下报错:
(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on
disk. Commands that may modify the data set are disabled. Please check Redis logs for details
about the error.
- 解决这个报错有两种思路:
-- 第一种是回溯分析 redis 到底出现了什么问题,从而在应用层面予以解决
,但这会影响应用的执行,如果问题没有查找清楚这个报错就会一直阻断程序运行;
-- 第二种是 打开conf 配置文件
,修改stop-writes-on-bgsave-error
为no
,之后重启 redis,这可以看做是一种临时解决方案,好处是不会影响程序的执行; - 最好是在配置 redis 的时候,就在 conf 配置文件中把
stop-writes-on-bgsave-error
的值修改为no
,毕竟应用程序中断是最不愿意看到的情况。