Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
创建一个List列表,并向其左边添加一个值,也可以添加多个值
lpush list one lpush list one two three
创建一个List列表,并向其右边添加一个值,或者多个值
rpush list test1 test2 test3
查看一个List列表的内容
lrange list 0 -1 #第一个是起始位置,从0开始,第二个是结束位置-1表示最后面
移出元素,既可以从左边移出,也可以从右边移出,不仅仅可以移出一个,也可以移出多个
lpop list #移出左边一个元素 rpop list #移出右边一个元素 lpop list 2 #移出左边两个元素 rpop list 4 #移出右边四个元素
查看List的长度
llen list
返回指定索引位置的value
lindex list 1#返回索引为1位置的value
从列表中删除指定元素,可以指定次数
lrem list 1 one #从列表中移出值为one的元素1次 lrem list 3 one #从列表中移出值为one的元素3次
修剪(trim)一个已存在的 list,这样 list 就会只包含指定范围的指定元素。
ltrim list 1 3#修剪一个list,只包含从索引为1到索引为3位置的元素
原子性地返回并移除存储在 source 的列表的最后一个元素(列表尾部元素), 并把该元素放入存储在 destination 的列表的第一个元素位置(列表头部)。
rpoplpush list1 list2#从list1列表中移出最后一个元素,并添加到list2的第一个位置
设置 index 位置的list元素的值为 value。当index超出范围时会返回一个error。
lset list 1 test#将list索引为1位置的值更新为test
把 value 插入存于 key 的列表中在基准值 pivot 的前面或后面。当 key 不存在时,这个list会被看作是空list,任何操作都不会发生。当 key 存在,但保存的不是一个list的时候,会返回error。
linsert list before one test1#在list中one的前面插入一个test1
将值 value 插入到列表 key 的表尾, 当且仅当 key 存在并且是一个列表。 和 RPUSH命令相反, 当 key 不存在时,RPUSHX 命令什么也不做。
rpushx mylist world#在mylist最后插入一个world,只有当mylist存在的时候才会插入,不存在的时候不会做什么事情
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
集合对象的编码可以是 intset 或者 hashtable。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
添加一个或多个指定的member元素到集合的 key中.指定的一个或者多个元素member 如果已经在集合key中存在则忽略.如果集合key 不存在,则新建集合key,并添加member元素到集合key中.如果key 的类型不是集合则返回错误.
sadd myset hello#添加一个hello到myset集合中
返回集合存储的key的基数 (集合元素的数量)
scard myset#获取myset中元素个数
返回key集合所有的元素.
smemebrs myset#查看myset集合元素
在key集合中移除指定的元素. 如果指定的元素不是key集合中的元素则忽略 如果key集合不存在则被视为一个空的集合,该命令返回0.
srem myset "one"#在myset集合中移出one
从存储在key
的集合中移除并返回一个或多个随机元素。
spop myset#从myset集合中随机移出一个元素 spop myset 2 #从myset集合中随机移出2个元素
仅提供key参数,那么随机返回key集合中的一个元素。Redis 2.6开始,可以接受 count 参数,如果count是整数且小于元素的个数,返回含有 count 个不同的元素的数组,如果count是个整数且大于集合中元素的个数时,仅返回整个集合的所有元素,当count是负数,则会返回一个包含count的绝对值的个数元素的数组,如果count的绝对值大于元素的个数,则返回的结果集里会出现一个元素出现多次的情况.仅提供key参数时,该命令作用类似于SPOP命令,不同的是SPOP命令会将被选择的随机元素从集合中移除,而SRANDMEMBER仅仅是返回该随记元素,而不做任何操作.
srandmember myset #随机从myset集合中返回一个元素 srandmember myset 2#随机从myset集合中返回2个元素
将member从source集合移动到destination集合中
smove myset myset1 two
返回一个集合与给定集合的差集的元素.
sdiff set1 set2 #返回set1和set2差集
返回指定所有的集合的成员的交集.
sinter set1 set2 #返回set1和set2交集
返回给定的多个集合的并集中的所有成员
sunion set1 set2 #返回set1和set2并集
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
设置 key 指定的哈希集中指定字段的值。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段在哈希集中存在,它将被重写。
hset myhash field1 "hello"#设置哈希集合myhash添加一个键值对,值为hello
返回hash里面field是否存在,返回1存在字段,返回0不存在字段
hexists myhash field1#myhash中是否存在field1
返回 key 指定的哈希集中该字段所关联的值
hget myhash field1#返回集合中字段field1的值
返回 key 指定的哈希集中所有的字段和值。返回值中,每个字段名的下一个是它的值,所以返回值的长度是哈希集大小的两倍。
hgetall myhash #返回集合myhash所有键值对
返回 key
指定的哈希集包含的字段的数量。
hlen myhash#返回myhash包含字段个数
设置 key
指定的哈希集中指定字段的值。该命令将重写所有在哈希集中存在的字段。如果 key
指定的哈希集不存在,会创建一个新的哈希集并与 key
关联。
hmset myhash filed1 val1 field2 val2#给myhash设置两个字段field1,field2
返回 key
指定的哈希集中指定字段的值。对于哈希集中不存在的每个字段,返回 nil
值。
hmget myhash field1 field2#返回myhash中字段field1,field2的值
从 key 指定的哈希集中移除指定的域。在哈希集中不存在的域将被忽略。
hdel myhash field1#从集合中移出field1
增加 key
指定的哈希集中指定字段的数值。如果 key
不存在,会创建一个新的哈希集并与 key
关联。如果字段不存在,则字段的值在该操作执行前被设置为 0。
hincrby myhash field4 5#将field4字段加5
只在 key
指定的哈希集中不存在指定的字段时,设置字段的值。如果 key
指定的哈希集不存在,会创建一个新的哈希集并与 key
关联。如果字段已存在,该操作无效果。
hsetnx myhash field5 test5#如果myhash存在field4属性就忽略,不存在就设置
返回hash指定field的value的字符串长度,如果hash或者field不存在,返回0。
hstrlen myhash field5#返回字段field5字符串长度
返回 key 指定的哈希集中所有字段的名字。
hkeys myhash#返回所有的key
返回 key 指定的哈希集中所有字段的值。
hvals myhash#返回所有values集合