Redis从入门到精通-常用命令

本文使用命令行模式进行操作

(1)keys

keys的作用是返回所有符合条件的key的列表

*是返回所有的,名字不限制

也可以使用限制

这个命令的原理是查询到所有名字符合条件的,然后返回

练习可以用,但是千万别在生产环境使用,如果生产环境有800w个key,即使使用了通配符进行名字的限制也是挨个去查然后过滤,会造成很恶劣的影响 

如果只是要看当前系统有多少个key的话,可以使用dbsize命令,这个是O(1)级别的:

(2)EXPIRE及ttl

这组命令是设置及查看过期时间

大于等于0代表实际的秒数(默认为秒),-1代表永不过期,-2代表不存在

 这里的坑:坑一:如果重新设置了key对应的value的值,如果没有设置过期时间,那这个key就永不过期了

坑2:只能设置顶级的key的过期时间,对于list或者set等复杂结构内部的某一条记录是无法设置过期时间的。

(3)rename

重新给key指定名字,这里要注意rename到的目标值是否存在:

 如果存在的话,会被当前的值覆盖

如果目的是存在则不覆盖也不重命名,可以使用renamenx(推荐使用避免覆盖了有用的数据)

 (4)exists

key是否存在,1表示存在,0表示不存在

(5)del

删除key对应的数据

可以一次删除多个:

del命令返回的数字代表删除成功了多少个 

(6)redis的key的命名

业务名:对象名:id(或者其他能代表一条数据的属性):属性

以下命令为string类型的命令

(7)mset mget

批量设置(获取)key和value

 批量命令可以提高性能:

set n次:n次网络+n次命令时间(redis执行时间)

mset n个key:1次网络+n次命令时间(redis执行时间)

(8)set

set 设置值

set key value

set命令有几个选项:

ex seconds: 为键设置秒级过期时间。

px milliseconds: 为键设置毫秒级过期时间。

nx: 键必须不存在,才可以设置成功,用于添加(分布式锁常用)。

xx: 与nx相反,键必须存在,才可以设置成功,用于更新。

(9) incr 和 decr

 

 (10)getset

设置新的值,返回原来键的值

要求原来的值必须存在

(11)setrange getrange

设置指定范围的值

 

--以下命令为hash类型专用

(12)hset hget

(13)hmset hmget

hset的结果也可以使用hmget去获取

我们也可以成对的使用hmset和hmget

 

(14)hdel hlen hkeys hvals

hdel 删除hash中的某个键或者多个键

hlen 返回hash的大小

hkeys 返回hash里key的列表

hvals返回hash里value的列表

(15)hgetall HINCRBY

hgetall获取hash中所有的键值对,奇数行代表key,偶数行代表value

HINCRBY类似于整数的自增,需要指定每次增加多少

 (16)String和hash的应用场景比较

String优点:简单直观,每个键对应一个值

String缺点:键数过多,占用内存多,用户信息分散,不用于生产环境(键比较少或者记录数比较少的时候也可以使用,不是绝对的)

Hash类型

优点:简单直观,使用合理可以减少内存空间消耗

缺点:老版本(3.2以前)注意ziplist和hashtable两种编码转换,新版本都是用的quicklist

将对象序列化存入string:

优点:编程简单,若使用序列化合理内存使用率高

缺点:序列化和反序列化有一定开销,查询不直观

总结:键比较少,记录比较少的时候可以用string,键比较多,记录比较多推荐使用json

比如一个表中有id,name,age,city等字段,我们就可以使用hmset

需要的时候按需根据hmget或者hget来取就行了 

--以下为list相关的命令

(17)rpush、lpush和lrange

rpush从右边插入,每次放到list的最右边

lpush从右边插入,每次放到list的最左边

lrange获取元素不弹出,-1代表最后

 (18)lpop、rpop

lpop,弹出最左边的元素,返回值是弹出的元素

rpop,弹出最右边的元素,返回值是弹出的元素

 (19)lrem

从左边删除元素  lrem demolist  2 x

表示从demolist的左边找到两个x并删除

 (20)ltrim lset

ltrim对list进行裁剪

lset设置list指定下标的值

 (21)lindex llen

lindex获取指定下标的值

llen返回list的长度

 (22)blpop brpop

阻塞式从左边或者右边弹出元素

跟lpop、rpop的区别是:如果有元素表现相同,如果没有元素的话,会阻塞。

可以使用作为简单的MQ

list的其他一些应用

用作栈

lpush rpop能实现队列

另外电商场景中的文章列表也可以用list实现

---以下命令用于Set类型

(23)sadd smembers

sadd 往set里添加元素,返回值是添加了多少个

smembers是返回集合中的元素

 (24)srem

删除集合中的一个或者多个元素

 (25)scard sismember srandmember

scard返回set中的元素数量

sismember 判断是不是集合中的元素,1 代表是,0代表不是

srandmember 随机返回一个元素

(26)sinter

求两个集合的交集

(27)sunion

求并集

(28)sdiff

求差集

 (29)sinterstore sunionstore sdiffstore

把结果存到另一个set里

------------以下命令为zset类型专用的命令

(30)zadd zcard zscore

zadd 添加一个或者多个元素 ,元素名字和分数是必须的

zcard返回zset中的元素的数量

zscore 返回指定元素的分数(不存在返回nil)

 (31)zrank zrevrank

zrank 排名,根据分数从小到大的顺序返回指定元素的排名(从0开始)

zrevrank 排名,根据分数从大到小的顺序返回指定元素的排名(从0开始)

 (32)zincrby

增加指定元素的分数

 (33)zrange zrevrange

zrange 获取指定范围的元素(从小到大)

zrevrange 获取指定范围的元素(从大到小)

 (34)zrangebyscore

 计算平均数

 (35)bitmap相关的命令

(36)Hyperloglog类型命令

命令本身无难度,关键是理解背后的原理:概率论里的伯努利试验和

 (37)GEO类型命令

经纬度是使用52位整数进行编码,然后放在zset里(作为score)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值