redis主要用法:全局命令、事务、持久化
一,全局命令
#连接redis
redis-cli -h host -p port -a password auth pwd select dbindex #key
#查询相关 keys pattern #搜索 ttl key #返回过期时间单位秒 pttl key #返回过期时间单位毫秒 type key #返回类型:string,hash,set,list,zset,none dump key #返回被序列化的值 exists key #检查key是否存在
#删除
del key #删除key
#修改 rename key newkey #修改key的名字,如果newkey存在会被替换 renamenx key newkey #仅当newkey不存在时改名 expire key sec expireat key timestamp pexpire key ms-sec #设置剩余时间,单位毫秒 pexpireat key ms-timestamp #设置过期时间戳,单位毫秒 persist key #使key不过期
move key dbindex #移动key道指定数据库
#通过key遍历
scan 0 match vote:vote_nonce:* count 100000 #从0开始,匹配match后面的,匹配100000条
#scan的游标是由0开始,到0结束
#count并不准确,结果数可能比count少或相等或多,只是一个提示。官网有说明
二,重要命令
1,info
info
info memory
2,monitor
monitor
#监控指定键
redis-cli -h 127.0.0.1 -p 6379 -a 'qwe!123' -n 1 monitor |grep 'vote:vote_detail:1587'
3,config
config get *
config set parameter value
config resetstat
4,debug
debug object key_name
三,命令行
#批量模式删除,参数必须是单引号 name="$1" echo $name redis-cli -h 127.0.0.1 -p 6379 -a 'qwe!123' -n 1 --scan --pattern $name| xargs redis-cli -h 127.0.0.1 -p 6379 -a "qwe!123" -n 1 del #监控monitor redis-cli -h 127.0.0.1 -p 6379 -a 'qwe!123' -n 1 monitor |grep 'vote:vote_detail:1587' #参数必须是单引号
#性能监控
redis-benchmark -h localhost -p 6379 -c 100 -n 100000#100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性能
四,高级用法
1,安全性
密码修改设置redis.conf里面的requirepass属性给予密码
requirepass "mima"
事务处理
redis对事务的支持还比较简单,redis只能保证一个client发起的事务中的命令可以连续执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务的上下文,连接后续命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令。
set age 100 multi set age 10 set age 20 exec get age #--这个内容就应该是20 multi set age 20 set age 10 exec get age #--这个时候的内容就成了10,充分体现了一下按照队列顺序执行的方式 discard #取消所有事务,也就是事务回滚
不过在redis事务执行有个别错误的时候,事务不会回滚,会把不错误的内容执行,错误的内容直接放弃,目前最新的是2.6.7也有这个问题的
乐观锁
watch key如果没watch的key有改动那么outdate的事务是不能执行的
持久化机制
1,redis是一个支持持久化的内存数据库
- snapshotting 快照方式,默认的存储方式,默认写入dump.rdb的二进制文件中,可以配置redis在n秒内如果超过m个key被修改过就自动做快照
- append-only file aof方式,使用aof时候redis会将每一次的函 数都追加到文件中,当redis重启时会重新执行文件中的保存的写命令在内存中。
//RDB方式 #1,自动化持久,需要配置3个项 save 60 1000 #每60秒,有超过1000个键变动,就自动调用bgsave dbfilename dump.rdb dir /usr/local/redis/var #2,手动调用:会阻塞 save #3,手动调用:通过子进程,不会阻塞 bgsave //AOF方式 #1,自动化持久,需要配置(会有很多重复命令,需要重写AOF) appendonly yes appendfilename appendonly.aof #2,手动重写AOF bgrewriteaof #3,自动重写AOF appendfsync everysec #有3种值:always,everysec,no auto-aof-rewrite-percentage 100#aof文件增长比例,当前aof文件比上次重写的增长比例大小 auto-aof-rewrite-min-size 1024mb#即最开始aof文件必须要达到这个文件时才触发,后面的每次重写就不会根据这个变量了
#持久化巡检修复,没用过
redis-check-aof appendonly.aof #加--fix参数为修复log文件
redis-check-dump dump.rdb
2,从 RDB 持久化切换到 AOF 持久化
- 为最新的
dump.rdb
文件创建一个备份。 - 将备份放到一个安全的地方。
- 执行以下两条命令:
CONFIG SET appendonly yes #开启了 AOF 功能: Redis 会阻塞直到初始 AOF 文件创建完成为止, 之后 Redis 会继续处理命令请求, 并开始将写入命令追加到 AOF 文件末尾 CONFIG SET save "" #用于关闭 RDB 功能。 这一步是可选的, 如果你愿意的话, 也可以同时使用 RDB 和 AOF 这两种持久化功能
//config配置的项,在重启后会被根据配置文件重置,所以需要写到配置文件中
-
确保命令执行之后,数据库的键的数量没有改变。
-
确保写命令会被正确地追加到 AOF 文件的末尾。