整理总结一下Redis基础命令和数据结构,忘记了方便查阅
1. 数据结构1-字符串(String)
可以是保存字符串、整数和浮点数
设值命令
set num 23 ex 10 //10秒后过期, px 10000 毫秒过期
setnx name test //不存在键name时,返回1且设置成功;存在的话失败0
set age 25 xx //存在键age时,返回1成功
获值命令
get age //存在则返回value, 不存在返回nil
批量设值
mset fruit apple num 5 # fruit apple 为一组;num 5 为一组
批量获取
mget fruit num address //返回apple 5, address为nil
字符串计数
incr age //必须为整数自加1,非整数返回错误,无age键从0自增返回1
decr age //整数age减1
incrby age 2 //整数age+2
decrby age 2 //整数age-2
incrbyfloat score 1.1 //浮点型score+1.1
append追加指令
set name hello
append name world //追加后成helloworld
注意:
set age 34
append age 23 // 得到 "3423"
incr age // 得到 3424
字符串长度
set hello "世界"
strlen hello //结果6,每个中文占3个字节
截取字符串
set name helloworld
getrange name 2 4 //返回 llo
2. 数据结构2 - 哈希(Hash)
哈希hash是一个string类型的field和value的映射表,hash特适合用于存储对象
命令
hset key field value
设值
hset user:1 name ying //成功返回1,失败返回0
取值
hget user:1 name //返回ying
删值
hdel user:1 age //返回删除的个数
计算个数
hset user:1 name james
hset user:1 age 23
hlen user:1 //返回2,user:1有两个属性值
批量设值
hmset user:2 name ying age 23 sex male //返回OK
批量取值
hmget user:2 name age sex //返回三行:ying 23 male
判断field是否存在
hexists user:2 name //若存在返回1,不存在返回0
获取所有field
hkeys user:2 // 返回name age sex三个field
获取user:2所有value
hvals user:2 // 返回ying 23 male
获取user:2所有field与value
hgetall user:2 //name age sex james 23 boy值
增加1
hincrby user:2 age 1 //age+1
hincrbyfloat user:2 age 2 //浮点型加2
3. 数据结构3-列表<list>
用来存储多个有序的字符串,一个列表最多可存2的32次方减1个元素
添加命令
rpush ying c b a //从右向左插入cba,返回值3
lrange ying 0 -1 //从左到右获取列表所有元素返回 c b a
lpush key c b a //从左向右插入cba
linsert ying before b teacher
//在b之前插入teacher, after为之后,使用lrange ying 0 -1 查看:c teacher b a
查找命令:
lrange key start end //索引下标特点:从左到右为0到N-1
lindex ying -1 //返回最右末尾a,-2返回倒数第二个
llen ying //返回当前列表长度
lpop ying //把最左边的第一个元素c删除
rpop ying //把最右边的元素a删
4. 数据结构4-集合<set>
保存多元素,与列表不一样的是不允许有重复元素,且集合是无序,一个集合最多可存2的32次方减1个元素,除了支持增删改查,还支持集合交集、并集、差集;
exists user //检查user键值是否存在
sadd user a b c //向user插入3个元素,返回3
sadd user a b //若再加入相同的元素,则重复无效,返回0
smember user //获取user的所有元素,返回结果无序
srem user a //返回1,删除a元素
scard user //返回2,计算元素个数
5. 数据结构5-有序集合(ZSET)
常用于排行榜,如视频网站需要对用户上传视频做排行榜,或点赞数与集合有联系,不能有重复的成员
zadd key score member [score member......]
zadd user:zan 200 james //james的点赞数1, 返回操作成功的条数1
zadd user:zan 200 james 120 mike 100 lee// 返回3
zadd test:1 nx 100 james //键test:1必须不存在,主用于添加
zadd test:1 xx incr 200 james //键test:1必须存在,主用于修改,此时为300
zadd test:1 xx ch incr -299 james //返回操作结果1,300-299=1
zrange test:1 0 -1 withscores //查看点赞(分数)与成员名
zcard test:1 //计算成员个数, 返回1
6. Redis全局命令
查看所有键
keys *
键总数
dbsize //2个键,如果存在大量键,线上禁止使用此指令
检查键是否存在
exists key //存在返回1,不存在返回0
删除键
del key //del hello school, 返回删除键个数,删除不存在键返回0
键过期
expire key seconds //set name test expire name 10,表示10秒过期
ttl key // 查看剩余的过期时
键的数据结构类型
type key // type hello 返回string,键不存在返回none