Redis基础指令篇

Redis

1.基础指令

1.切换数据库

select number

2.清空当前库

FLUSHDB

3.通杀所有库

FLUSHALL

2.Redis数据类型_key键

1.查询库中所有key
keys *

生产已经禁止。因为长时间阻塞redis而导致其他客户端的命令请求一直处于阻塞状态。 更安全的做法是采用scan。
redis-cli -h 127.0.0.1 -p 6379 -a 123456 --scan

2.判断某个值是否存在,返回1表示存在,返回0表示不存在
exists key

可以设置多个key,但是只返回存在的个数,不具体展示哪个存在。

3.查看当前key所存储的类型
type key
4.删除已经存在的key
del key

存在删除,不存在忽略。可以设置多个值,返回删除的个数。

5.给key设置生存时间
expire key time

成功返回1,不成功返回0。

6.返回键的生存时间
ttl key

当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。

7.移除给定 key 的过期时间
persist key

使得key永不过期

3.Redis数据类型

String

String是Redis最基本的类型,一个key对应一个value。String是二进制安全的,意味着String可以包含任何数据,比如序列化对象或者一张图片。String最多可以放512M的数据。

基本指令

1.set
用于设置给定 key 的值。如果 key 已经存储其他值, set 就重写旧值,且无视类型。

set key value

2.get
用于获取指定 key 的值。如果 key 不存在,返回 nil 。

get key

3.append
将给定的value追加到key原值末尾。

append key value

4.strlen
获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。

strlen key

5.setex
给指定的 key 设置值及time 秒的过期时间。如果 key 已经存在, setex命令将会替换旧的值,并设置过期时间。

setex key time value

6.setnx
只有在key不存在时设置key的值

setns key value

7.getrange
获取指定区间范围内的值,类似between…and 的关系

getrange key start end

8.setrange
设置指定区间范围内的值,类似between…and 的关系

setrange key offset value

9.incr
将 key 中储存的数字值增一。

incr key

注意: 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incr 操作。 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。

10.decr
将 key 中储存的数字值减一。

decr key

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 decr 操作。 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。
11.incrby/decrby
将key存储的数字值按照step进行增减。

incrby/decrby key step 

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incrby/decrby 命令。 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。
12.mset
同时设置一个或多个 key-value

mset key1 value1 key2 value2

13.mget
返回所有(一个或多个)给定 key 的值。

mget key1 key2

14.getset
将给定key值设为value,并返回key的旧值(old value),简单一句话(先get然后立即set)。

getset key value

String的使用场景

  • 计数器
  • 统计多单位的数量
  • 粉丝数
  • 对象缓存存储
  • 分布式锁

List

List是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。底层是一个双向链表, 对两端操作性能极高,通过索引操作中间的节点性能较差。

基本指令

1.lpush/rpush
从左边(头部)/右边(尾部)插入一个或多个值。

lpush/rpush key1 value1 value2 value3……

2.lrange
返回key列表中的start和end之间的元素(包含start和end)。 其中 0 表示列表的第一个元素,-1表示最后一个元素。

lrange key start end

3.lpop/rpop
移除并返回第一个值或最后一个值。

lpop/rpop key

4.lindex
获取列表index位置的值,从左开始

lindex key index

5.llen
获取列表长度。

llen key

6.lrem
从左边开始删除与value相同的count个元素。

lrem key count value

7.linsert
在列表中value值的前边/后边插入一个new value值(从左开始)。

linsert key before/after value newvalue

8.lset
将索引为index的值设置为value

lset key index value

list的使用场景

  • 消息队列
  • 排行榜
  • 最新列表

set

与List类似是一个列表功能,但Set是自动排重的,当需要存储一个列表数据,又不希望出现重复数据时,Set是一个很好的选择。 Set是String类型的无序集合,它底层其实是一个value为null的hash表,所以添加、删除、查找的时间复杂度都是O(1)。

基本指令

1.sadd
将一个或多个元素添加到集合key中,已经存在的元素将被忽略。

 sadd key value1 value2……

2.smembers
取出该集合的所有元素。

smembers

3.sismember
判断集合key中是否含有value元素,有返回1,无返回0.

sismember key value

4.scard
返回集合中元素个数

scard key

5.srem
删除集合中的一个或多个成员元素,不存在的成员元素会被忽略。

srem key value1 value2……

6.spop
随机删除集合中的一个元素

spop key

7.srandmember
随机取出集合中count个元素,但不会删除。

srandmember key count

8.smove
将value元素从sourcekey集合移动到destinationkey集合中。

smove sourcekey destinationkey value

9.sinter
返回两个集合的交集元素。

sinter key1 key2

10.sunion
返回两个集合的并集元素。

sunion key1 key2

sdiff
返回两个集合的差集元素(key1中的,不包含key2)

sdiff key1 key2

set集合使用场景

  • 黑白名单
  • 随机展示
  • 好友
  • 关注人
  • 粉丝
  • 感兴趣的人集合

hash集合

Hash是一个键值对的集合。Hash 是一个 String 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

基本指令

1.hset
给key集合集合中的field赋值value

hset key field value

2.hget
从哈希表中,取出field中的值

hget key field

3.hmset
批量设置哈希的字段及值。

hmset key field1 value1 field2 value2……

4.hexists
判断指定key中是否存在field

hexists key field

5.hkeys
获取该哈希中所有的field。

hkeys key

6.hvals key
获取该哈希中所有的value。

kvals key

7.hincrby
为哈希表key中的field字段的值加上增量increment。

hincrby key field increment

8.hdel
删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。

hdel key field1 field2……

9.hsetnx
给key哈希表中不存在的的字段赋值 。

hsetnx key field value

使用场景

  • 购物车
  • 存储对象

Zset集合

Zset与Set非常相似,是一个没有重复元素的String集合。不同之处是Zset的每个元素都关联了一个分数(score),这个分数被用来按照从低分到高分的方式排序集合中的元素。集合的元素是唯一的, 但分数可以重复。 因为元素是有序的,所以可以根据分数(score)或者次序(position)来获取一个范围内的元素。

基本指令

1.zadd
将一个或多个元素(value)及分数(score)加入到有序集key中。

zadd key score1 value1 score2 value2……

2.zrange
返回key集合中的索引start和索引end之间的元素(包含start和end)。

zrange key start end [withscores]

3.zrangebyscore
返回key集合中的分数minscore 和分数maxscore 之间的元素(包含minscore 和maxscore )。其中元素的位置按分数值递增(从小到大)来排序。

zrangerbyscore key minscore maxscore [withscores]

4.zincrby
为元素value的score加上increment的值

zincrby key increment value

5.zrem
删除该集合下的元素

zrem k1 php 删除php

6.zcount
统计该集合在minscore 到maxscore分数区间中元素的个数。

zcount key minscore maxscore

7.zrank
返回value在集合中的排名,从0开始。

zrank key value

zset的使用场景

  • 延时队列
  • 排行榜
  • 限流

Bitmaps

在计算机中,用二进制(位)作为存储信息的基本单位,1个字节等于8位。 Redis提供了Bitmaps这个 “数据结构” 可以实现对位的操作:
1.setbit
设置Bitmaps中某个偏移量的值。

setbit key offset value

2.getbit
获取Bitmaps中某个偏移量的值。

getbit key offset

3.bitcount
统计字符串被设置为1的bit数量。一般情况下,给定的整个字符串都会被进行统计,可以选择通过额外的start和end参数,指定字节组范围内进行统计(包括start和end),0表示第一个元素,-1表示最后一个元素。

bitcount key [start end]

4.bitop
将多个bitmaps通过求交集/并集方式合并成一个新的bitmaps。

bitop and/or destkey sourcekey1 sourcekey2……

Bitmaps使用

  • 活跃天数
  • 打卡天数
  • 登录天数
  • 用户签到
  • 统计活跃用户
  • 统计用户是否在线
  • 实现布隆过滤器
  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值