获取所有符合规则的key列表;keys * 获取所有的key列表;如果数据比较多的话不建议使用,存在性能问题
keys 获取key列表时候支持glob风格匹配;glob是用来匹配路径名的通配符;以下四种是匹配格式是glob的匹配规则。
符号 | 含义 |
---|---|
? | 匹配一个字符 |
* | 匹配任意个字符(0个) |
[] | 匹配括号中的任一字符,可以使用“-”来表示一个范围,比如a[c-e];那么可以匹配 ac,ad,ae |
\ | 用于转义特殊字符 ;比如要比配?;那么可以使用?来匹配问题 |
判断一个key 是否存在 ;如果返回值是1表示存在;返回0,不存在
删除一个或者多个key,返回删除key的数量
获取key值的数据类型
字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据
将键key设定为指定的“字符串”值。
如果 key 已经保存了一个值,那么这个操作会直接覆盖原来的值,并且忽略原始类型。
EX
seconds – 设置键key的过期时间,单位时秒PX
milliseconds – 设置键key的过期时间,单位时毫秒NX
– 只有键key不存在的时候才会设置key的值XX
– 只有键key存在的时候才会设置key的值eg:
#设置key 为mykey value为111
set mykey 111
#设置key 为post value为mmmm 20秒过期
set post mmmm ex 20
set 命令只支持单个key设置,如果要同时set多个值,可以使用mset
mset key1 "hello" key2 "world"
返回key
的value
。如果key不存在,返回特殊值nil
。如果key
的value
不是string,就返回错误,因为GET
只处理string类型的values
。
127.0.0.1:6379> get mytest
"ceshi"
127.0.0.1:6379> get 111
(nil)
127.0.0.1:6379>
对存储在指定key
的数值执行原子的加1操作。
如果指定的key不存在,那么在执行incr操作之前,会先将它的值设定为0
。
如果指定的key中存储的值不是字符串类型(fix:)或者存储的字符串类型不能表示为一个整数,
那么执行这个命令时服务器会返回一个错误(eq:(error) ERR value is not an integer or out of range)。
这个操作仅限于64位的有符号整型数据。
注意: 由于redis并没有一个明确的类型来表示整型数据,所以这个操作是一个字符串操作。
执行这个操作的时候,key对应存储的字符串被解析为10进制的64位有符号整型数据。
事实上,Redis 内部采用整数形式(Integer representation)来存储对应的整数值,所以对该类字符串值实际上是用整数保存,也就不存在存储整数的字符串表示(String representation)所带来的额外消耗。
127.0.0.1:6379> get intkey
"11"
127.0.0.1:6379> incr intkey
(integer) 12
返回key的string类型value的长度。如果key对应的非string类型,就返回错误。
127.0.0.1:6379> get title
"111"
127.0.0.1:6379> strlen title
(integer) 3
还有很多其他关于strings 类型的命令 decr,decrby ,bitcount,append等等,
具体可参考官方文档http://www.redis.cn/commands/strlen.html
hash类型也是一种字典结构,存储了字段和字段值之间的映射,但是字段值只能是字符串,不支持其他数据类型。
设置 key 指定的哈希集中指定字段的值。
如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。
如果字段在哈希集中存在,它将被重写。
#创建一个 car:1 字段color 值为黑色
hset car:1 color black
返回指定的哈希集中该字段所关联的值
127.0.0.1:6379> hget car:1 name
"BMW"
返回指定哈希集中的字段集合
127.0.0.1:6379> hkeys car:1
1) "name"
2) "price"
3) "color"
返回指定哈希集中所有字段和值
127.0.0.1:6379> hgetall car:1
1) "name"
2) "BMW"
3) "price"
4) "450000"
5) "color"
6) "black"
返回哈希集中是否包含字段(field)
127.0.0.1:6379> hexists car:1 name
(integer) 1
127.0.0.1:6379> hexists car:1 nadfe
(integer) 0
还有很多其他的命令使用;具体参考:http://www.redis.cn/commands/hset.html
列表类型存储的是一个有序的列表,列表类型的存储列表使用的是双向链表来实现的,所以通常在两端进行添加、删除操作
将所有指定的值插入到存于 key 的列表的头部。如果 key 不存在,那么在进行 push 操作前会创建一个空列表。 如果 key 对应的值不是一个 list 的话,那么会返回一个错误。
127.0.0.1:6379> lpush list a b c
(integer) 3
127.0.0.1:6379> lrange list 0 4
1) "c"
2) "b"
3) "a"
返回存储在 key 的列表里指定范围内的元素。 start 和 end 偏移量都是基于0的下标,即list的第一个元素下标是0(list的表头),第二个元素下标是1,以此类推。
127.0.0.1:6379> lrange list 0 4
1) "c"
2) "b"
3) "a"
从列表头部移除第一个元素
127.0.0.1:6379> lpop list
"c"
127.0.0.1:6379> lrange list 0 4
1) "b"
2) "a"
根据索引的位置更新list列表中改位置的值
127.0.0.1:6379> lset list 0 a1
OK
127.0.0.1:6379> lrange list 0 4
1) "a1"
2) "a"
返回列表的长度
127.0.0.1:6379> lrange list 0 4
1) "a1"
2) "a"
127.0.0.1:6379> llen list
(integer) 2
把 value 插入存于 key 的列表中在基准值 pivot 的前面或后面。
当 key 不存在时,这个list会被看作是空list,任何操作都不会发生。
当 key 存在,但保存的不是一个list的时候,会返回error。
127.0.0.1:6379> lrange list 0 4
1) "a1"
2) "a"
127.0.0.1:6379> linsert list before a b
(integer) 3
127.0.0.1:6379> lrange list 0 4
1) "a1"
2) "b"
3) "a"
返回列表里的元素的索引 index 存储在 key 里面。 下标是从0开始索引的,所以 0 是表示第一个元素, 1 表示第二个元素,并以此类推。 负数索引用于指定从列表尾部开始索引的元素。在这种方法下,-1 表示最后一个元素,-2 表示倒数第二个元素,并以此往前推。
当 key 位置的值不是一个列表的时候,会返回一个error。
127.0.0.1:6379> lrange list 0 4
1) "a1"
2) "b"
3) "a"
127.0.0.1:6379> lindex list 0
"a1"
向存于 key 的列表的尾部插入所有指定的值。如果 key 不存在,那么会创建一个空的列表然后再进行 push 操作。 当 key 保存的不是一个列表,那么会返回一个错误。
127.0.0.1:6379> rpush list1 a b c
(integer) 3
127.0.0.1:6379> lrange list1 0 4
1) "a"
2) "b"
3) "c"
从列表尾部移除一个元素
127.0.0.1:6379> rpop list1
"c"
127.0.0.1:6379> lrange list1 0 4
1) "a"
2) "b"
还有一些其他的命令,具体参考:http://www.redis.cn/commands/rpop.html
集合类型中每个元素都不相同,切无序。
在Redis中,也可以对多个集合类型键之间进行并集、交集、差集运算。
添加一个或多个指定的member元素到集合的 key中.指定的一个或者多个元素member 如果已经在集合key中存在则忽略.如果集合key 不存在,则新建集合key,并添加member元素到集合key中.
如果key 的类型不是集合则返回错误.
127.0.0.1:6379> sadd set a b c
(integer) 3
127.0.0.1:6379> smembers set
1) "c"
2) "b"
3) "a"
返回集合中的所有元素
127.0.0.1:6379> smembers set
1) "c"
2) "b"
3) "a"
在key集合中移除指定的元素. 如果指定的元素不是key集合中的元素则忽略 如果key集合不存在则被视为一个空的集合,该命令返回0.
如果key的类型不是一个集合,则返回错误.
127.0.0.1:6379> srem set a
(integer) 1
127.0.0.1:6379> smembers set
1) "c"
2) "b"
判断某个值是否存在集合中
127.0.0.1:6379> smembers set
1) "c"
2) "b"
127.0.0.1:6379> sismember set b
(integer) 1
返回集合中元素的数量
127.0.0.1:6379> smembers set
1) "c"
2) "a"
3) "b"
127.0.0.1:6379> scard set
(integer) 3
返回集合之间的差集
127.0.0.1:6379> smembers set
1) "c"
2) "a"
3) "b"
127.0.0.1:6379> smembers set1
1) "d"
2) "c"
3) "b"
127.0.0.1:6379> sdiff set1 set
1) "d"
返回集合之间的交集
127.0.0.1:6379> smembers set
1) "c"
2) "a"
3) "b"
127.0.0.1:6379> smembers set1
1) "d"
2) "c"
3) "b"
127.0.0.1:6379> sinter set set1
1) "c"
2) "b"
返回集合之间的并集
127.0.0.1:6379> sunion set set1
1) "b"
2) "a"
3) "c"
4) "d"
将某个集合中的元素移动到另一个集合中
127.0.0.1:6379> smove set1 set d
(integer) 1
127.0.0.1:6379> smembers set
1) "d"
2) "c"
3) "a"
4) "b"
127.0.0.1:6379> smembers set1
1) "c"
2) "b"
从集合中移除一个或者多个随机元素
127.0.0.1:6379> smembers set
1) "d"
2) "c"
3) "a"
4) "b"
127.0.0.1:6379> spop set 2
1) "b"
2) "d"
127.0.0.1:6379> smembers set
1) "c"
2) "a"
还有一些其他的有关集合的命令:http://www.redis.cn/commands/spop.html
有序集合:在集合类型的基础上有序集合类型为每个元素都关联一个分数,这使得我们不仅可以完成插入、删除、和判断元素、是否存在等集合类型支持操作。
有序集合类型和列表类型存在相似之处:
不同之处:
将所有指定成员添加到键为key
有序集合(sorted set)里面。 添加时可以指定多个分数/成员(score/member)对。 如果指定添加的成员已经是有序集合里面的成员,则会更新改成员的分数(scrore)并更新到正确的排序位置。
如果key
不存在,将会创建一个新的有序集合(sorted set)并将分数/成员(score/member)对添加到有序集合,就像原来存在一个空的有序集合一样。如果key
存在,但是类型不是有序集合,将会返回一个错误应答。
ZADD
返回值只计算新添加成员的数量。ZADD
指定这个选项时,成员的操作就等同ZINCRBY命令,对成员的分数进行递增操作。有序集合里面的成员是不能重复的都是唯一的,但是,不同成员间有可能有相同的分数。当多个成员有相同的分数时,他们将是有序的字典(ordered lexicographically)(仍由分数作为第一排序条件,然后,相同分数的成员按照字典规则相对排序)。
字典顺序排序用的是二进制,它比较的是字符串的字节数组。
如果用户将所有元素设置相同分数(例如0),有序集合里面的所有元素将按照字典顺序进行排序,范围查询元素可以使用ZRANGEBYLEX命令(注:范围查询分数可以使用ZRANGEBYSCORE命令)。
127.0.0.1:6379> zadd hashset 1 a
(integer) 1
127.0.0.1:6379> zadd hashset 2 a
(integer) 0
127.0.0.1:6379> zadd hashset 2 b
(integer) 1
127.0.0.1:6379> ZRANGE hashset 0 10 WITHSCORES
1) "a"
2) "2"
3) "b"
4) "2"
返回存储在有序集合key
中的指定范围的元素。 返回的元素可以认为是按得分从最低到最高排列。 如果得分相同,将按字典排序。
127.0.0.1:6379> ZRANGE hashset 0 10
1) "a"
2) "b"
3) "c"
如果在命令后面加WITHSCORES 则会打印出当前值的分数
获取某个元素的分数
127.0.0.1:6379> zscore hashset a
"2"
返回有序集合中元素的数量
127.0.0.1:6379> zcard hashset
(integer) 3
返回有序集合分数在min和max之间的元素数量
127.0.0.1:6379> ZRANGE hashset 0 10 WITHSCORES
1) "a"
2) "2"
3) "b"
4) "2"
5) "c"
6) "10"
127.0.0.1:6379> zcount hashset 1 2
(integer) 2
返回删除有序集合中存在的元素个数,不存在的则不计入
127.0.0.1:6379> zrem hashset c
(integer) 1
127.0.0.1:6379> ZRANGE hashset 0 10 WITHSCORES
1) "a"
2) "2"
3) "b"
4) "2"
返回有序集key中成员member的排名。其中有序集成员按score值递增(从小到大)顺序排列。排名以0为底,也就是说,score值最小的成员排名为0。
127.0.0.1:6379> zrank hashset c
(integer) 0
127.0.0.1:6379> zrank hashset a
(integer) 1
127.0.0.1:6379> ZRANGE hashset 0 10 WITHSCORES
1) "c"
2) "1"
3) "a"
4) "2"
5) "b"
6) "2"
其他的命令详情参考:http://www.redis.cn/commands/zinterstore.html
原文:https://www.cnblogs.com/JackQiang/p/13226757.html