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 持久化
  1. 为最新的 dump.rdb 文件创建一个备份。
  2. 将备份放到一个安全的地方。
  3. 执行以下两条命令:
CONFIG SET appendonly yes #开启了 AOF 功能: Redis 会阻塞直到初始 AOF 文件创建完成为止, 之后 Redis 会继续处理命令请求, 并开始将写入命令追加到 AOF 文件末尾
CONFIG SET save "" #用于关闭 RDB 功能。 这一步是可选的, 如果你愿意的话, 也可以同时使用 RDB 和 AOF 这两种持久化功能

//config配置的项,在重启后会被根据配置文件重置,所以需要写到配置文件中
  1. 确保命令执行之后,数据库的键的数量没有改变。

  2. 确保写命令会被正确地追加到 AOF 文件的末尾。

 

posted @ 2020-08-27 09:25  小匡程序员  阅读(237)  评论(0编辑  收藏  举报