Redis和五种数据结构以及语句

Key不要太长,不要超过1024个字节,不然会影响查找的效率;
不要太短,会影响可读性;

二、
存储String:redis中是最为基础的存储数据类型,在redis中以二进制的

赋值:
SET KEY VALUE,GET KEY
set a a1,get a ```

还可以``getset a a1```,会先去获取a,再进行赋值

删除某一个key:
DEL KEY_NAME

数值增:INCR KEY
会先赋予0进行然进行++后赋值。

如果不是数值类似是字符串就会报错。
数值减:DECR KEY
会进行默认为0,然后再–,变为-1

数字相加:INCRBY A B
incrby num 5,如果没有num,就为0+5;

数字相减:DECRBY A B
decrby num 3,如果没有num,就0-3

追加字符串:APPEND A A1,
返回字符串的长度所以是数值,需要去获取数据来查看
如果你没创建被追加的字符串,那么会相当于:””+追加啊上的内容;

三、
存储Hash:
可以看成是K-V的map容器,键值对类型,适合存储值对象等信息,如果Hash包含了很少的字段,那么它就占有很少的磁盘空间

存入单个数据:
hset hash名 key value
取出数据:
hget hash名key value
存入多个数据:
hmset hash名 key1 value1 key1 value2 ….
取出数据可以取单笔的,也可以取出指定名称的,也可以全部取出:
hmget hash名 key1 key2 …
取出全部数据:
hgetall hash名

判断属性下的值是否存在,不存在返回0,存在返回1;
hexists hash名 key

获取该KEY存储的属性数量:
hlen hash名
获取该KEY存储的key:
hkeys hash名
获取该KEY存储的value:
hvals hash名

四、
存储list:

底层原理使用了ArrayList所以查询速度快,使用了双向链表对数据进行增删改查,所以读写十分高效;

两端添加:如果添加成功则返回添加的个数
从左边添加:lpush list1 v1 v2 v3 ….,
从右边添加:rpush list2 v1 v2 v3….,

查看列表:lrange list1开始下标 结束下标
因为是双向链表所以是环形的,那么下图的数据输出就能明白了

两端弹出:会返回并弹出,只要弹出以后list里就没有该元素了,只能弹出两端的头元素(两端分别的第一个):
左端弹出:rpop list1
右端弹出:lpop list2

查看list长度:
llen list1

判断list存在才可以插入:
lpushx list1 x
rpushx list1 x

删除:
从左开始删除,删除 x个V1
lrem list1 x个数 V1
从右开始删除,删除 x个V1
lrem list1 -x个数 V1

在指点下标设置值:
lset list1下标 xxx

在下标前插入:
linsert list1 before 下标 xxx

在下标后插入:
linsert list1 after下标 xxx

将链表尾部弹出添加到头部:
rpoplpush list1 list2

使用场景:
Redis链表常常被用于消息队列的一些服务。来完成多个程序的消息的交互,
lpush在一边加入消息,这里我们称为生产者,而rpop在达到条件时,弹出消息,我们称为消费者,但是未达到条件进行了弹出就会消息丢失,数据丢失,所以我们会开一个守护线程对他进行备份。

五、
存储set:

可以看作没有排序的list集合

添加:(不可重复)
sadd set v1 v2 v3

删除:
srem set v1 v2 v3

查看list里成员:
smembers set

判断set是否存在该元素:(返回1为存在,0不存在)
sismember set 元素

集合的差集运算:(找不同)
sdiff set1 set2

集合的交集运算:
sinter set1 set2

集合的并集运算:(合并去重)
sunion set1 set2

查看set的成员数量:
scard set

随机查看set成员:
srandmember set

把两个set中不同的成员存到另一个set中:
smembers set

把两个set中相同的成员存到另一个set中:
smembers set

把两个set合并去重存到另一个set中:
smembers set

使用场景:

五、
存储Sorted-Set
不可重复,但是它除了key和value还有一个分数可以重复,增加删除更新成员十分快速,有序;

添加:
zadd set 分数 key

取值:取分数
zscore set key

查看长度:
zcard set

删除:
zrem set key1 key2

查看set:
zrange set 下标 下标
zrange set 下标 下标 withscores
(按分数由小到大排序的)

zrevrange set 下标 下标 withscores
(按分数由大到小排序的)

按范围进行删除:

zremrangebyrank set 下标 下标
(0到4删除)

按分数进行删除:
zremrangebyscore set 下标 下标
(80到100分的删除)

按分数进行查询:
zrangebyscore set 下标 下标 withscores
(0到100分的查询)

相加:
zincrby set 数 数

查询分数间的个数:
zcount set 数 数

使用场景:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷偷学习被我发现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值