string

set a 1 设置字符串
get a 获取字符串
del a 删除key(任何类型都可以)
exists a 判断a是否存在(为空时会自动删除,添加时会自动创建)
type a a的redis数据类型
incr a 对a加1
incrby a 10 对a加10

list

lpush mylist a b c 左边依次放入mylist
rpush mylist b c d 右边依次放入mylist
lpop 从左边弹出
rpop 从右边弹出
lrange mylist 0 -1 0到最后一个遍历
ltrim mylist 0 2 只保留0到2共三个元素,其他元素删掉

hash

hmset user username a birthyear 1900 verified 1 创建一个user的key,里面放三组键值对
hmget user username birthyear test 批量获取user不同key的值
hget user username 获取user,单个key=username的值
hgetall user 获取user所有字段
hincrby user birthyear 10 为user的birthyear字段加10

set

sadd myset 1 2 3 对myset加入123
smembers myset 查看myset所有元素
sismember myset 2 查看2是否存在
sinter t1 t2 t3 查看t1,t2,t3的交集
sunionstore t1 t2 t3 查看t2,t3的并集,放入t1
scard t1 查看set大小
spop t1 弹出sett1中的任意一个元素

sorted set(zset)

zadd hackers 1940 “Alan Kay” 添加hackers,其中score=1940,名称是Alan Kay
zrange hackers 0 -1 查看hackers所有元素
zrevrange hackers 0 -1 查看hackers逆序所有元素
zrange hackers 0 -1 withscores 查看hackers所有元素附加score
zrangebyscore hackers -inf 1950 查看score<1950的元素
zrank hackers “Alan Kay” 查看某个分数
zrangebylex hackers [B [P ?这个没看懂。。。。

Bitmaps

setbit key 10 设置key的10位bit位为10
getbit key 10 获取key的10位bit位

HyperLogLog(redis 2.8.9)

用于统计去重后元素个数
pfadd basekey “b” 添加一个元素b
pfcount basekey 查看basekey去重后的元素个数
pfmerge basekey3 basekey basekey2 把basekey和basekey2合并放入basekey3中

备份与恢复

SAVE 保存到RDB
CONFIG Get dir 查看持久化路径
BGSAVE 后台保存
config get requirepass 获取密码
config set requirepass “abc” 配置密码
redis-cli -a “abc” 使用密码登录

发布订阅

subscribe a 订阅a
publish a “message content” 给已经订阅a的客户端发送消息,若接收成功返回1

服务器

INFO 查看服务器信息

事务

MULTI 开始事务
set a 10
lpush b 5 3 2
EXEC 结束事务

数据结构

SDS

已占用长度,未占用长度,char数组,好处是可以O(1)查strlen,可以预先扩展长度,已经扩展的不回缩

链表

准确是有头尾节点的双向链表,典型就是list

压缩表

长度超过一定长度后无法再用压缩表,4位有效长度,4位尾节点位置,2位节点数量,剩下的是实际的节点内容

跳表

当压缩表放不下会存到跳表,指向下一个节点的数量是随机的,最多不超过32,指向前驱一个节点
使用跳表的原因是占用少,性能好,实现简单

整型数组

当数据都为整型数组时,会采用整型数组,长度为8,如果整型数组长度有扩展,会进行长度的对应升级,如果存入非整型的内容,会转为其他结构

字典

有两片哈希来存储,平时只用一个,当进行rehash时,数据换到另一块哈希内存上;如果数据量较大会采用渐进式哈希,一次复制一部分,新插入的哈希数据只会放入第二块哈希中