Redis在工作的应用场景比较多,
比如用于存放有时限的数据,存放对象数据,统计访客数据等,
笔者整理了Redis的五种类型的基本操作命令,
这些命令也直接对应到相应的API,
希望能帮助大家快速掌握Redis。
字符类型String
字符串或者是数值,可以设置其过期时间。
命令 | 作用 |
---|---|
set key value | 添加一个key |
get key | 查询信息,如果不存在的话返回nil |
del key | 删除(删除成功返回1,删除失败返回0) |
mset key1 value1 key2 value2 | 存储多个数据 |
mget key1 key2 | 获取多个值 |
strlen key | 返回字符串长度 |
append key 追加的内容 | 给key追加值,如果不存在直接新建key |
incr key | 让字符数值增加1,例如2变为3,返回值是value |
decr key | 让字符数值减少1,例如3变为2,返回值是value |
incrby key num | 让value值增加num(num为整数),返回值是value |
decrby key num | 让value值减少num,返回值是value |
incrbyfloat key num | 让value值增加num(num为小数),返回值是value |
decrbyfloat key num | 让value值减少num(num为小数),返回值是value |
setex key seconds value | 让一个值存在多少秒数,时间到了就没了 |
psetex key milliseconds value | 让一个值存在多少毫秒 |
PS:
①使用数值操作,如果不能转换为数字或者范围超出将报错。其最大值范围-9223372036854775808到9,223,372,036,854,775,807,即是-2的63次方到2的63次方-1
②string的最大数据是512MB
哈希hash
hash可被认为是key的值是一个字典,通过指定key field才能找到具体的值。
命令 | 作用 |
---|---|
hset key field vaue | 给key新增一个field其值为value |
hget key field | 获取key值中field的值 |
hgetall key | 获取key中所有东西 |
hdel key field1 field2 | 删除key中的field1…. |
hlen key | key有的field数量 |
hexists key field | 查看key中是否存在field |
hkeys key | 查看key下的所有field |
hvals key | 查看key下的所有value |
hincrby key filed num | 让key中的filed增加num |
hincrbyfloat key filed num | 让key中的filed增加num(小数) |
hmset key field1 value1 … | 设置多个值 |
hdel key field | 删除key中field |
hsetnx key field value | 如果存在不变,如果不存在添加 |
PS:
①value中只能是字符串/数值类型。
②hash中的存储类似于对象,但是不能滥用。
③hash不能设置过期时间。
列表list
存储多个数据,底层使用的数据结构为双向列表。使用的插入方法是头插法。
例如:如图,从左遍历是b a ,插入c ,因为是头插,所以成了cba (从左边遍历)
命令 | 作用 |
---|---|
lpush key value1 value2 | 左插入list |
rpush key value1 value2 | 将数据右插入list |
lrange key start end | 查看start到end的元素(end可以为负数,但是start不能为负数) |
lindex key index | 查看位置为index的元素 |
llen key | 查看key的长度 |
lpop key | 获取并且移除左边的数据 |
rpop key | 获取并且移除右边的数据 |
blpop key time | 在一定时间内左边取出数据且移除 |
brpop key time | 在一定时间内右边取出数据且移除 |
lrem key n value | 移除列表里的值value,并且移除n个value |
集合set
存储大量数据,提供高效率查询,数据不允许重复。可以用于去重 。
命令 | 作用 |
---|---|
sadd key value1 value2 | 增加元素 |
smembers key | 查看key中所有元素 |
srem key value | 移除某个元素 |
scard key | 获取集合元素的总数量 |
sismembers key member | 查看member是否在集合中 |
srandmember key count | 随机取集合中的一个值,不在元素中删除 |
spop kye | 随机获取集合中的某个数据且移除 |
sinter set1 set2… | 求交集 |
sunion set1 set2…. | 求并集 |
sdiff set1 set2 | 求差集 |
sinterstore set1 set2 set3 | 将set2与set3的交集存到set1中 |
sunionstore set1 set2 set3 | 将set2与set3的并集存到set1中 |
sdiffstore set1 set2 set3 | 将set2与set3的差集存到set1中 |
smove set1 set2 member | 将set1中的member移到set2中,s1中会去除 |
排序集合 sorted_set
key member score,某个班级里某个同学有一个分数,通过分数排名。
命令 | 作用 |
---|---|
zadd key score member score1 member1 | 添加数据 |
zrange key start stop (withscores) | 从start看到stop,选择是否看到score(由小到大排的),不使用withscore返回的menber的值 使用withscores返回的数据为member1 score1 member2 score1 2 |
zrevrange key start stop (withscores) | 从start看到stop,选择是否看到score(由大到小排的) |
zrem key member | 移除数据 |
zrangebyscore key min max (withscores limit start end) | 查看min到max之间的数据,可以使用limit限制数量。从小到大。 |
zrevrangebyscore key max min (withscores limit start end) | 查看min到max之间的数据,可以使用limit限制数量, 从大到小。 |
zremrangebyrank key start stop | 按索引删除,start到stop的都删除(两端的都删除) |
zremrangebyscore key min max | 按score删除,删除从min到max的数据 |
zcard key | 查看多少数据 |
zconut key min max | 查看范围在min到max中的数据总数 |
zinterstore st1 num st2 st3 st4 (ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX) | 交集,指定num个st(后面写的数量需与num一致),将这些个集合里都公共的东西的score加起来,然后存在st1中,还可以求平均最大最小,以及设置权重。 |
zunionstore st1 num st2 st3 st4 | 并集,指定num个st(后面写的数量需与num一致),将这些个集合里都公共的东西的score加起来,然后存在st1中,还可以求平均最大最小,以及设置权重。 |
zrank key member | 查看member的索引,从小到大 |
zrevrank key member | 查看member的索引,从大到小 |
zscore key member | 查看member的score |
zincrby key num member | 将key中的member加num |
PS:
①如果score使用整数,其范围是2的64位。
②score为小数的时候,是双精度的double类型,进行加减的时候会造成精度丢失等。
精度问题参考: