连接redis
redis-cli -h 192.168.2.215 -p 6379
查看键
keys *
存取变量
set num 1
get num
字符串操作
set str "hello"
append str "world"
strlen str
查看类型
type num
type amap
type alist
查看是否存在key
exists num
exists alist
hexists mmap email
切换数据库(默认0数据库
)
select 1
获取多个key
mget num str
mset num 3 str "world"
bit操作
set fg "bar"
getbit fg 0
getbit fg 6
setbit fg 0 1
bitcount fg
原子操作
incr num
incrby num 3
decr num
decrby num 2
incrbyfloat num 2.1
#没有decrbyfloat
incrbyfloat num -0.1
list操作
lpush alist a
lpush alist b
lpush alist c
rpush alist d
lpop alist
rpop alist
llen alist
获取片段,包含最右边的元素,支持负数索引
lrange alist 0 4
获取所有元素
lrange alist 0 -1
从左边开始删除第一个值为p的元素
lrem alist 1 p
删除所有值为p的元素
lrem alist 0 p
从右边开始删除第一个值为p的元素
lrem alist -1 p
查找索引为0的元素
lindex alist 0
查找右边第一个元素
lindex alist -1
通过索引赋值
lset alist 2 y
删除指定索引外的元素
ltrim alist 0 3
在指定值w后插入
linsert alist after w k
在指定值w之前插入
linsert alist before w x
从右边pop一个元素到目标列表
rpoplpush alist blist
按其他键排序
lpush slist 2 1 3
set itemscore:1 50
set itemscore:2 100
set itemscore:3 -10
sort slist by itemscore:* desc
集合操作
sadd myset a
sadd myset b c
查看所有
smembers myset
查看集合元素个数
scard myset
删除元素
srem myset c
判断元素是否在集合中
sismember myset c
集合运算
sadd seta 1 2 3
sadd setb 2 3 4
计算差集
sdiff seta setb
计算差集并存储到setj
sdiffstore setj seta setb
sadd setc 2 3
sdiff seta setb setc
计算交集
sinter seta setb
计算交集并存储到setx
sinterstore setx seta setb
计算并集
sunion seta setb
计算并集并存储到setu
sunionstore setu seta setb
随机获取元素
srandmember seta 2
从集合随机弹出一个元素
spop seta
集合排序,默认将元素转为双精度浮点,从小到大排序
sort seta
按照字典顺序
sort setn alpha
有序集合
列表是双向链表实现的,获取靠近两端的元素速度快,当元素增多时访问中间元素变慢
比较适合新鲜事、日志这种很少查询中间元素的应用
有序集合是使用散列表/跳跃表实现的,读取中间元素也很快
列表不能简单调整某个元素的位置,有序集合可以
有序集合会给每个元素计算分数,更耗内存,是所有集合中最高级的
zadd sortset 89 tom 90 jim 100 david
更新jim分数
zadd sortset 78 jim
按照得分从小到大查看元素
zrange sortset 0 -1
按照得分从大到小查看元素
zrevrange sortset 0 -1
查看元素和得分
zrange sortset 0 -1 withscores
查看得分
zscore sortset david
按照得分范围查看,包含90
zrangebyscore sortset 90 100
不包含90
zrangebyscore sortset (90 100
无穷,从第二个人开始取3个人
zrangebyscore sortset (80 +inf limit 1 3
增加某个元素分数
zincrby sortset -3 tom
获取元素个数
zcard sortset
获取指定范围内元素个数
zcount sortset 90 100
zcount sortset (89 +inf
删除一个或多个元素
zrem sortset jim
按照排名删除
zremrangebyrank sortset 0 2
按照分数范围删除分数
zremrangebyscore sortset (60 80
获取排名,从小到大
zrank sortset jim
获取排名,从大到小
zrevrank sortset jim
计算有序集合交集
zadd t1 1 a 2 b
zadd t2 10 a 20 b
2为元素个数
zinterstore rs 2 t1 t2
aggregate为新集合元素分数的计算方式
zinterstore rs1 2 t1 t2 aggregate min
zinterstore rs2 2 t1 t2 aggregate max
zinterstore rs3 2 t1 t2 aggregate sum
增加权重
zinterstore rs4 2 t1 t2 weights 1 0.1
zrange rs2 0 -1 withscores
map操作
hset amap name "psersia"
//update or insert a key
hset amap email "a@g.com"
hget amap name
hgetall amap
hmset mmap username persia password pw age 3
hmget mmap username age
hgetall mmap
//当字段不存在时赋值,atomic
hsetnx mmap email p@gmail.com
hincrby mmap age 2
//如果不存在,则创建一个key
hincrby mmap score 60
hdel mmap score
hkeys mmap
hvals mmap
hlen mmap
事务
multi
sadd "user:1:following" 2
sadd "user:2:followers" 1
exec
watch的变量在watch之后被修改
#于是事务不执行,count值为2
set count 1
watch count
set count 2
multi
set count 3
exec
get count
设置缓存时间
set mycache 100
15分钟后失效,-1为永久存活
expire mycache 900
重新设置生存时间
expire mycache 90
#以毫秒为单位
pexpire mycache 1000
查看剩余的存活时间
ttl mycache
取消缓存,改为永久存活
persist mycache
set也可以清除生存时间
set mycache hello
ttl mycache
lpush,rpop实现消息队列
lpush q hello world
lpush q test msg
lrange q 0 -1
rpop q
//带10秒的超时时间
brpop q 10
//超时时间设为0,当没有元素时一直阻塞
brpop q 0
发布订阅模式
publish mychannel hi
subscribe mychannel
//匹配mychannel.1,mychannel.10
psubscribe mychannel.?*
unsbuscribe mychannel
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。