redis 高级特性
- keys * 返回满足的所有键(可以模糊匹配)
- exists 是否存在指定的key
- expire 设置某个key的过期时间(单位为秒),使用 ttl 查看剩余时间
- persist 取消过期时间
- select 选择数据库,数据库为0-15(一共16个数据库),默认进入的是0
- move [key] [数据库下标] 将当前数据库中的key转移到指定的数据库
- randomkey 随机返回数据库中的key
- rename 重命名key
- echo 打印内容,和shell中echo一样
- dbsize 查看数据库中的key数量
- info 获取数据库信息
- config get [配置名] 返回相关的配置信息;
config get *
返回所有配置 - flushdb 清空当前数据库; flushall 清空所有数据库
- 登录授权,一秒内可以进行15w次的密码尝试,如何去添加权限校验的步骤
1. 修改 redis.conf 配置文件中的 requirepass passwordContent
2. 重启redis: pkill redis-server
3. 需要权限校验: auth passwordContent
4. 还可以直接在登录的时候就授权: redis-cli -a passwordContent
事务
redis的事务非常简单:
- 使用
multi
方法打开事务 - 设置的数据都会放入队列进行保存
- 使用
exec
执行,把数据依次存储到redis中 - 使用
discard
方法取消事务
注意: redis的事务不能保证同时成功或失败进行提交或回滚。
持久化
redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化,方式如下两种:
- snapshotting (快照) 默认方式,将内存中已快照的方式写入到二进制文件中,默认为 dump.rdb, 我们可以设置redis在n秒内如果超过m个key被修改,则自动做快照,例如:
# snapshotting设置
save 900 1 # 900秒内如果超过1个key被修改,则发起快照保存
- append-only file (缩写aof)的方式,类似于oracle日志,aof方式比快照方式有更好的持久化特性,由于aof时,redis会将每一个收到的写命令都通过write函数追加到命令中,当redis重新启动时,会重新执行文件中保存的写命令,来在内存中重建这个数据库的内容,这个文件在bin目录下: appendonly.aof,aof不是立即写到磁盘上,可以通过配置文件修改强制写到硬盘上,如下
# aof 配置
appendonly yes # 启动aof持久化方式,如下三种修改方式
# appendfsync always # 收到写请求后立即写入到磁盘,效率最慢,但是保证完全的持久性(建议)
# appendfsync everysec # 每秒写入磁盘一次,在性能和持久化之间做了和好的折中
# appendfsync no # 完全依赖os性能,持久化没保障
发布订阅
redis提供了简单的发布订阅功能
- 使用
subscribe channel [channel ...]
进行订阅监听 - 使用
publish channel conent
进行发布消息广播
# 实现频道订阅
subscribe channel_1 channel_2
# 实现消息发布
publish channel_1 'this is a publish content.'
publish channel_2 'this is another publish content.'
网友评论