//以下是一些常用命令和个人看法,如有偏颇,请不吝赐教.
关于key值
del key
rename key newname
exists key
type key
keys name* //获取符合条件的key
expire key s 设置过期时间,单位:秒
ttl key 查看过期时间 (-1 永不过期)
persist key 持久化 (移除过期时间)
字符串操作
set key val
get key
incr key
decr key
incrby key val
decrby key val
setnx key val 当可以不存在时赋值 (返回0赋值失败,可以存在)
列表操作:
个人认为列表就是php的普通一纬索引数组 [1,2,3,4],注意列表不支持查询,一般用于队列
lpush key value1 [value] 在数组的左侧插入数据,返回数组长度
rpush key value1 [value] 在数组的右侧插入数据,返回数组长度
lrange key start end 查看数组
lpop key
rpop key
llen key 获取列表长度
lindex key index
lset key index val
LINSERT key BEFORE|AFTER pivot value
//元素前或者后插入元素。当指定元素不存在于列表中时,不执行任何操作。当列表不存在时,被视为空列表,不执行任何操作。如果 key 不是列表类型,返回一个错误。
lrem key count value
Redis Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
COUNT 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值
哈希操作:
哈希中只能查键是否存在 不能查值是否存在(可以查键)
hmset/hset key field1 name1 field2 name2
hget key field1 //获取键的值
hmget key field1 field2 //根据键名获取多个键值
hgetall key
hexists key field //查看键是否存在
hincrby key field vale
hincrbyfloat key field value
hsetnx key filed value //键不存在时赋值
hkeys key //获取所有的键
hvals key //获取所有的值
hlen key //获取长度
集合
成员唯一,相当于php索引数组(抛弃了键值),个人还没遇到使用场景,侧重点应该在redis提供的运算上(交集,并集,差集)
sadd key member1 membere2 //
srem key member2 member2 //删除集合中的元素
sismember key member //判断集合中是否存在某个值
smembers key //返回集合中的所有成员
smove source destination member //把成员从source移动值destination
spop key //删除并返回集合中的一个随机元素
srandmember key [count] //返回集合中的元素
scard key //成员总数 (数组长度)
sdiff key1 [key2,key3] 取集合的差级
sdiffstore destination key1 [key2] 用destination存数组的差集
sinter key1 [key2,key3] 取集合的交级
sinterstore destination key1 [key2] 用destination存数组的交集
sunion key1 [key2,key3] 取集合的并级
sunionstore destination key1 [key2] 用destination存数组的并集
有序集合
成员唯一,但是权重可以重复,一般用于做排行榜 需注意一点,有序集合有‘键’(从0开始),权重(分数),成员(value).默认排序方式从小到大.公式内的start,stop,min,max如果是数字则是包含,如果是成员则支持[(数学写法
zadd key score1 member1 score2 member2
//获取数量
zcard key //返回集合成员数
zcount key score_min score_max //返回成绩区[min,max]成员数 (不支持[,(写法)
zlexcount key [member_min member_max //返回成员区间内的 成员数量
//返回分数或者排名
zscore key member //返回成员的分数
zrank key member //返回会员的索引,注意是索引!! 也就是排名-1 从小到大
zrevrank key member //返回从大到小的会员排名
zincrby key increment member //对某个会员加权
//返回成员列表
zrange key start stop [withscores] //通过索引返回成员列表,注意是索引! 加withscores返回值加上权重
zrevrange key start stop [withscores] //通过索引返回成员列表,注意是索引! 加withscores返回值加上权重(从大到小)
zrangbylex key [member_min [member_max [withscores] [limit 1,1] //返回成员区间内的所有成员
zrevrangebyscore key score_min score_max [withscores] // 返回权重区间[score_min,score_max]的会员
//移除会员
zrem key member [member2] //移除会员
zremrangebyscore key score_min score_max // 移除有序集合内权重在[score_min,score_max]的成员
zremrangebyrank key index_start index_stop //移除排名区间内[index_start,index_stop]的
zremrangebylex key min max //移除有序集合中给定的字典区间的所有成员 字典=会员
缓存雪崩,穿透,击穿
缓存雪崩:是指在某一个时间段,缓存集中过期失效。
缓存穿透:是指查询一个数据库一定不存在的数据。
缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。