redis(三)-----redis基本数据类型 (2)

相比于使用字符串序列化缓存用户信息,哈希类型变得更加直观,并且在更新操作上会更加便捷。可以将每个用户的id定义为键后缀,多对field- value对应每个用户的属性

·哈希类型是稀疏的,而关系型数据库是完全结构化的,例如哈希类型 每个键可以有不同的field,而关系型数据库一旦添加新的列,所有行都要为 其设置值(即使为NULL)
·关系型数据库可以做复杂的关系查询,而Redis去模拟关系型复杂查询 开发困难,维护成本高。

列表

列表(list)类型是用来存储多个有序的字符串,如a、 b、c、d、e五个元素从左到右组成了一个有序的列表,列表中的每个字符串 称为元素(element),一个列表最多可以存储2^32-1个元素。在Redis中,可 以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列 表、获取指定索引下标的元素等。列表是一种比较灵活的数据结构,它可以充当栈和队列的角色,在实际开发上有很多应用场景。

redis(三)-----redis基本数据类型

列表类型有两个特点:第一、列表中的元素是有序的,这就意味着可以 通过索引下标获取某个元素或者某个范围内的元素列表,例如要获取图的第5个元素,可以执行lindex user:1:message4(索引从0算起)就可以得 到元素e。第二、列表中的元素可以是重复的,例如图所示列表中包含 了两个字符串a。

redis(三)-----redis基本数据类型

redis(三)-----redis基本数据类型

命令

list的命令

添加操作
(1)从右边插入元素
rpush key value [value ...]
lrange0-1命令可以从左到右获取列表的所有元素
命令
127.0.0.1:6379> rpush listkey a b c
(integer) 3
127.0.0.1:6379> lrange listkey 0 -1

"a"

"b"

"c"
(2)从左边插入元素
lpush key value [value ...]

127.0.0.1:6379> lpush listkey1 a b c
(integer) 3
127.0.0.1:6379> lrange listkey1 0 -1

"c"

"b"

"a"

(3)向某个元素前或者后插入元素
linsert key before|after pivot value
linsert命令会从列表中找到等于pivot的元素,在其前(before)或者后 (after)插入一个新的元素value

127.0.0.1:6379> linsert listkey before b e
(integer) 4
127.0.0.1:6379> lrange listkey 0 -1

"a"

"e"

"b"

"c"

查找
(1)获取指定范围内的元素列表
lrange key start end

lrange操作会获取列表指定索引范围所有的元素。索引下标有两个特点:

第一,索引下标从左到右分别是0到N-1,但是从右到左分别是-1到-N。

第二,lrange中的end选项包含了自身

127.0.0.1:6379> lrange listkey 1 3

"e"

"b"

"c"

(2)获取列表指定索引下标的元素
lindex key index
实例
127.0.0.1:6379> lindex listkey 0
"a"
(3)获取列表长度
llen key
实例
127.0.0.1:6379> llen listkey
(integer) 4

删除
(1)从列表左侧弹出元素
lpop key
实例
127.0.0.1:6379> lpop listkey
"a"
127.0.0.1:6379> lrange listkey 0 -1

"e"

"b"

"c"

(2)从列表右侧弹出
rpop key
实例
127.0.0.1:6379> rpop listkey
"c"
127.0.0.1:6379> lrange listkey 0 -1

"e"

"b"

(3)删除指定元素
lrem key count value
lrem命令会从列表中找到等于value的元素进行删除,根据count的不同分为三种情况:

count>0,从左到右,删除最多count个元素。

count<0,从右到左,删除最多count绝对值个元素。

count=0,删除所有。

实例
127.0.0.1:6379> lpush listdel a a a b b b c c c
(integer) 9
127.0.0.1:6379> lrange listdel 0 -1

"c"

"c"

"c"

"b"

"b"

"b"

"a"

"a"

"a"
127.0.0.1:6379> lrem listdel 2 a
(integer) 2
127.0.0.1:6379> lrange listdel 0 -1

"c"

"c"

"c"

"b"

"b"

"b"

"a"

(4)按照索引范围修剪列表
ltrim key start end

127.0.0.1:6379> lrange listdel 0 -1

"c"

"c"

"c"

"b"

"b"

"b"

"a"
127.0.0.1:6379> ltrim listdel 2 4
OK
127.0.0.1:6379> lrange listdel 0 -1

"c"

"b"

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfszg.html