Redis常用指令
redis 作为高性能的kv数据库,在面对高频访问却又不怎么被修改的数据,可以缓存在redis里面,不用每次请求时候都需要进行一下mysql数据查询然后进行数据运算。可以把数据运算结果直接缓存下来。当然数据如果有短期变动,还可以设置redis key 的过期时间来保证数据是实效性。
redis 是一个 kv 的数据库,value 主要常用的数据类型有 string、list(即 js 中的 Array)、map(hash 即 js 中 Object) set (无序,不重复数组) Sortedset (zset Sortedset 是有序集合,fe 不常用)
以下是数据基础的增删改查 api 各类型公用的 api keys _ 查询存在的所有得到 key,如 keys xyh_。
exsists key [key ...] 返回存在的数量 (不仅仅是查看 value 是 string 类型)
expire key seconds 设置过期时间 设置的是一个时间长度
expireat key timestamp 设置过期时间,是一个具体的时间日期
pexpire key milliseconds 设置单位是毫秒
pexpireat key milltimestamp
rename key newkey 重命名
ttl key 查看 key 剩下的过期时间
persist key 取消 key 的过期时间 成为永久 key
del key [key ...] 删除 key
1.string 类型
set key value [expiration EX seconds|PX milliseconds][nx|xx] 多操作:mset key value [key value ...]
set key value [expiration EX seconds|PX milliseconds][nx|xx]
setex key seconds value 设置 kv 同时设置 key 的有效时长 秒
setnx key seconds value 不存在则设置
get key 多操作:mget key [key...]
incr key 设置间隔:incrby key value
decr、decrby
append key value 字符串后面插入
strlen key 查询长度
2.map 类型(hash) 对应 js 的 object
如 hmset user name xyh age 18 就是设置一个 key user={name:"xyh",age:"18"},每一个 field 都是 string 然后操作每一个 field 和操作 string 的 key 有很多是一样的。
hset key field value
hmset key field value [field value ...]
hget key field
hmget key field [field ...]
hlen key 查看一个 key 的所有 field 如 Object.keys(obj)
没有 hexprie key field 这样的 api
hexists key field
hincrby key field increment 无 hincr
hdecyby key field increment 无 hdecr
hgetall key 查看 key 所有 field
3.list 即 js Array 有序 可重复
lpush key value [value ...] 从左边插入
rpush key value [value ...] 从右边插入
lpop key 左边弹出一个,一次一个
rpop key 右边弹出一个,一次一个
llen key 查看数组长度
lrange key start stop、lindex key index 获取数组元素
lset key index value
lrem key count value 删除数组 count 个值为 value 的元素 count>0 从左边删除 count<0 从右删 count=0 删全部对应值的元素
ltrim key start stop 裁剪数组
linsert key BEFORE|AFTER pivot value 插入 从哪个值 pivot 插入 (竟然不是 index)
4.Set 类型 如 js Set 无序 不重复
sadd key member [member...] 增加元素
srem key member [member...] 删除元素
smembers key 获得集合中的所有元素
sismember key member 判断元素是否在集合中
scard key 查看元素个数
spop key 随机(因为无序)弹出一个元素
集合运算:sdiff key [key...] 差集,sinter 交集 sunion 并集
5.zset 元素有序且不重复的 又叫 Sortedset
排序的 rank 的依据是给每个元素添加一个 分数 score 。然后依据这个分数做排序。对数据的操作 可以分 依据分数(或排名)来操作:如查看一个元素的分数(或排名),获取某个分数范围内(或排名名次范围内)的元素,删除某个分数范围内(或排名名次范围)的元素,获取某分数范围的个数
增加元素必须有元素以及对应的分数:
zadd key score member [score member...]
zscore key member 查看元素分数
zrank key member 查看元素排名(从小到大)
zrevrank key member 查看元素排名(从大到小)
zrange key start stop [withscores] 按照从小到大排名获取元素 加 withscores 可以顺便获取元素的分数
zrevrange key start stop [withscores] 按照从大到小排名获取元素
zrangebyscore key min max [withscores][limit offset count] 获得指定分数范围的元素
zrem key member [member...] 删除元素
zremrangebyrank key start stop 按照排名范围删除元素
zremrangebyscore key min max 按照分数范围删除元素
zcount key min max 获得指定分数范围内的元素个数
zcard key 获得集合中元素的数量
zincrby key increment member 增加某个元素的分数
for fe
对于前端 操作redis 可以直接使用 ioredis node client 来操作。记住需要操作多个指令时候 可以用上pipeline 把多个指令先缓存 后才一起 push 到redis。
PS:以上只是前端日常用到的 redis 数据库基本操作。几乎够用了。后面会补上 redis的发布订阅模式。然后有空在介绍一波 dgraph 图数据库。