Redis五大数据类型+key常用方法
Redis 键(Key)
- keys * 列出所有的key
- keys apple* 匹配的apple*
- exists key_name 判断key_name 是否存在
- move key db 移动到指定库
eg:MOVE song 1 //将 song 移动到数据库 1
- expire key 为给定的key设置过期时间
- ttl key 查看key还有多少秒过期,-1永不过期,-2已过期
- type key 查看key的类型
- del key 存在时删除key
- persist key 移除key的过期时间,key持久化保持
Redis 字符串(String)
- set/get/del/append/strlen 追加/长度 (set存在时覆盖)
- Incr/decr/incrby/decrby 只有数字才能加减 自加每次加1
- getrange/setrange 获取指定区间,类似between and
eg:getrange key6 0 -1 //从0 -1 表示全部 -1最后一个字符,-2表示倒数第二个
eg:get key4
abcd1234
setrange key4 1 xxx
axxx1234 //设置区间,从0开始
- setex 设置键秒值
setex key1 12 hello //设置key1 为hello 12 秒
- setnx 只有在key不存在时设置key值
eg:
setnx key1 hello
1
setnx key1 hello2
0
- mset/mget/msetnx 同时设置一个或多个键值对
eg:mset key1 aa key2 bb key3 cc
mget key1 key2 key3
1)"aa"
2)"bb"
3)"cc"
msetnx 必须所有的key都不存在才能设置
- getset 先get再set
eg:
get k1
"hello"
getset k1 abc
"hello"
get k1
"abc"
Redis 列表list
- lpush/rpush/lrange
eg: LPUSH list1 "foo"
LPUSH list1 "bar"
LRANGE list1 0 -1
1) "bar"
2) "foo"
- lpop/rpop 弹出 队列里就没了
- lindex/llen
- lrem key 删除N个value
eg:lrem list3 2 v1 //删除list3中的2个v1键
- ltrim key
eg:ltrim list1 3 5 //截取index从3到5
- rpoplpush list1 list2
- 弹list1的最后一个,添加到list2的头
- lset key index value
- linsert key before/after 值
eg:linsert list3 before 3 oracle //在list3 的3(键)之前加oracle
Redis set集合
- sadd/smembers/sismember 添加(重复会失败)/打印全部/判断存在
eg:sismember set1 0 //判断0是否存在于set1 不存在0/存在1
- scard 获取元素个数
- srem key value
eg:srem set1 v1 v2 v3
- srandmember key n
- 从key中取出n个数(不会改变key)
- 超过最大数量就全部取出
- 如果n为负数,就有可能有重复的数
- spop 随机弹一个数出来
- smove key1 key2 a //将key1里的值赋给key2
- 数学类集合
sdiff 差集 set1里有的set2里没有的
sinter 交集
sunion 并集
Redis 哈希hash
- kv模式不变,但V是一个键值对,存对象 (K,(K,V))
- hset/hget/hmset/hmget/hgetall/hdel //获取所有的键,值/删除存在的返回1
- hlen/hexists(同之前)
- hkeys/hvals 获取所有的键/值
- hincrby/hincrbyfloat 增加整数/小数
eg:hincrby hash k1 3 给hash的k1的值增加3
- hsetnx 不存在赋值,存在无效
Redis 有序集合Zset
- 基于set,多加个score
- set: k1 v1 k2 v2
- Zset: k1 score1 v1 score2 v2
- zadd/zrange/zrevrange(逆序)
eg:zadd zset01 60 v1 70 v2 80 v3 (注意此时数字不是value,是score)
zrange zset01 0 -1
1)"v1"
2)"v2"
3)"v3"
zrange zset01 0 -1 withscores
1)"v1"
2)"60"
3)"v2"
4)"70"
5)"v3"
6)"80"
3.zrangebyscore/zrevrangebyscore(逆序)
eg: zrangebyscore zset01 60 90 60<=值<=90
zrangebyscore zset01 60 (90 60<=值<90
zrangebyscore zset01 (60 (90 60<值<90
zrangebyscore zset01 60 90 limit 2 2 60<=值<=90,从2开始截2个 (同mysql)
注意:zrevrangebyscore zset01 90 60 90>=值>=60
- zrem 删除
- zcard/zcount/zrank
eg: zcard zset01 统计个数
zcount zset01 60 80 统计60-80的个数
zrank zset01 v4 得到下标
zscore zset01 v4 得到对应的score
zrevrank zset01 v4 逆序得到下标
自己总结,仅供参考。