String字符串
代码 | 解释 |
set key value | 设置值 |
get key | 获取值 |
key * | 获取所有的key |
exists key | 判断值是否存在 |
append key value | 追加值,如果key不存在,相当于set key |
strlen key | 获取值的长度 |
incby key [step] | 自增,可以设置步长 |
decby key [step] | 自减,可以设置步长 |
getrange key [stat_num, end_num] | 截取字符串 闭区间[0,3] 0,1,2,3 |
getrange key 0 -1 | 和get key 结果一致 |
setrange key start_num newval | 替换指定位置开始的字符串 |
setex | 值存在,再设置 |
setnx | 值不存在,再设置 分布式锁常用 |
ttl key | 获取值的剩余时间 |
mset k1 v1 k2 v2 | 批量设置 |
mget k1 k2 | 批量获取 |
msetex k1 k2 | 值存在,批量设置 原子操作,要么一起成功,要么一起失败 |
msetnx k1 k2 | 值不存在,批量设置 |
getset key value | 返回当前值,并更新 如果值不存在,返回nil |
getset 先get后set
127.0.0.1:6379> getset db redis #如果不存在值,则返回nil
(nil)
使用实例:记录用户登录次数
set user:1:logins 1
事务
redis单条命令保证原子性,但事务不保证原子性
redis中事务的本质是一组命令的集合。一个事务中的命令都会被序列化,在事务执行的过程中,会按照顺序进行执行。
—- 队列 set set set … 执行 —
- 开始事务
- 命令入列
- 执行事务
方法 | 解释 |
multi | 开启事务 |
exec | 执行事务 |
discard | 取消事务 |
127.0.0.1:6379>multi #开启事务 OK #命令入列 127.0.0.1:6379>set k1 v1 QUEUED 127.0.0.1:6379>set k2 v2 QUEUED 127.0.0.1:6379>get k1 QUEUED 127.0.0.1:6379>exec #执行事务 #执行结果 1) ok 2) ok 3) "v2"