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 数 数
使用场景: