发布网友 发布时间:2022-04-08 02:03
共3个回答
懂视网 时间:2022-04-08 06:25
.0.1:6379> lpush mylist1 world (integer) 1 redis 127.0.0.1:6379> lpush mylist1 hello (integer) 2 redis 127.0.0.1:6379> lrange mylist1 0 -1 1) "hello" 2) "world"
2. rpush
在key对应list的尾部添加字符串。
redis 127.0.0.1:6379> rpush mylist2 bbb
(integer) 1
redis 127.0.0.1:6379> rpush mylist2 aaa
(integer) 2
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "bbb"
2) "aaa"
3. linsert
在key对应的list的特定位置前或后添加字符串。
redis 127.0.0.1:6379> rpush mylist3 world
(integer) 1
redis 127.0.0.1:6379> linsert mylist3 before world hello
(integer) 2
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "hello"
2) "world"
4. lset
设置list中指定下标的元素值。
redis 127.0.0.1:6379> rpush mylist5 world (integer) 1 redis 127.0.0.1:6379> lset mylist5 0 hello OK redis 127.0.0.1:6379> lrange mylist5 0 -1 1) "hello"
5 lrem
从key对应list中删除n个和value相同的元素。( n < 0 从未删除, n =0 全部删除)
redis 127.0.0.1:6379> rpush mylist6 hello (integer) 1 redis 127.0.0.1:6379> rpush mylist6 hello (integer) 2 redis 127.0.0.1:6379> lrem mylist6 1 hello (integer) 1
6 ltrim
保留指定key 的范围内的数据。
redis 127.0.0.1:6379> rpush mylist8 one
(integer) 1
redis 127.0.0.1:6379> rpush mylist8 two
(integer) 2
redis 127.0.0.1:6379> ltrim mylist8 1 -1
OK
redis 127.0.0.1:6379> lrange mylist8 0 -1
1) "two"
7 lpop
从list的头部删除元素,并返回删除元素。
redis 127.0.0.1:6379> rpush mylist11 one
(integer) 1
redis 127.0.0.1:6379> rpush mylist11 two
(integer) 2
redis 127.0.0.1:6379> rpush mylist11 three
(integer) 3
redis 127.0.0.1:6379> lpop mylist11
"one"
redis 127.0.0.1:6379> lrange mylist11 0 -1
1) "two"
2) "three"
8.rpoplpush
从第一个list的尾部移出元素并添加到第二个list的头部。
redis 127.0.0.1:6379> rpush mylist12 one (integer) 1 redis 127.0.0.1:6379> rpush mylist12 two (integer) 2 redis 127.0.0.1:6379> rpush mylist13 aaa (integer) 1 redis 127.0.0.1:6379> rpush mylist13 bbb (integer) 2 redis 127.0.0.1:6379> rpush mylist13 ccc (integer) 3 redis 127.0.0.1:6379> rpoplpush mylist12 mylist13 "two" redis 127.0.0.1:6379> lrange mylist12 0 -1 1) "one" redis 127.0.0.1:6379> lrange mylist13 0 -1 1) "two" 2) "aaa" 3) "bbb" 4) "ccc"
9 lindex
返回名称为key的list中index位置的元素。
redis 127.0.0.1:6379> lrange mylist13 0 -1
1) "two"
2) "aaa"
3) "bbb"
4) "ccc"
redis 127.0.0.1:6379> lindex mylist13 0
"two"
redis 127.0.0.1:6379> lindex mylist13 1
"aaa"
redis 127.0.0.1:6379> lindex mylist13 2
"bbb"
10 llen
返回key对应list的长度。
redis 127.0.0.1:6379> llen mylist13
(integer) 4
redis 127.0.0.1:6379> lrange mylist13 0 -1
1) "two"
2) "aaa"
3) "bbb"
4) "ccc"
深入浅出Redis04使用Redis数据库(lists类型)
标签:
热心网友 时间:2022-04-08 03:33
解决方案
如果你仅仅为了缓存存一批量的 List<Customer> 数据, 那么自己封装一个ListGet() 和 ListSet()方法吧。
我对比过使用 List 和 String 两种类型存储。
Redis 的List类型和 .NET领域还有所不同,实际上,它是一个双向队列,可以左右插入值。
所以如果是批量数据插入 那么必须一个个插入, 代码比较简单如下:
//封装的ListSet
当然测试了一下性能,取20W条数据平均时间
热心网友 时间:2022-04-08 04:51
Redis里面使用intset是为了实现集合(set)这种对外的数据结构。 set结构类似于数学上的集合的概念,它包含的元素无序,且不能重复。 Redis里的set结构还实现了基础的集合并、交、差的操作。 与Redis对外暴露的其它数据结构类似,set的底层实现,随着元素类型是否是整型以及添加的元素的数目多少,而有所变化。概括来讲,当set中添加的元素都是整型且元素数目较少时,set使用intset作为底层数据结构,否则,set使用dict作为底层数据结构。