首页 > 其他 > 详细

Redis-基础命令使用

时间:2020-07-02 21:09:30      阅读:64      评论:0      收藏:0      [点我收藏+]

Redis-基础命令使用

常用命令

keys

获取所有符合规则的key列表;keys * 获取所有的key列表;如果数据比较多的话不建议使用,存在性能问题

keys 获取key列表时候支持glob风格匹配;glob是用来匹配路径名的通配符;以下四种是匹配格式是glob的匹配规则。

符号 含义
匹配一个字符
* 匹配任意个字符(0个)
[] 匹配括号中的任一字符,可以使用“-”来表示一个范围,比如a[c-e];那么可以匹配 ac,ad,ae
\ 用于转义特殊字符 ;比如要比配?;那么可以使用?来匹配问题
exists

判断一个key 是否存在 ;如果返回值是1表示存在;返回0,不存在

del

删除一个或者多个key,返回删除key的数量

type

获取key值的数据类型

Strings(字符串类型)

字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据

SET

将键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"
    
GET

返回keyvalue。如果key不存在,返回特殊值nil。如果keyvalue不是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>
INCR

对存储在指定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
STRLEN

返回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

hashes(hash类型)

hash类型也是一种字典结构,存储了字段和字段值之间的映射,但是字段值只能是字符串,不支持其他数据类型。

HSET key field value

设置 key 指定的哈希集中指定字段的值。

如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。

如果字段在哈希集中存在,它将被重写。

#创建一个 car:1 字段color 值为黑色
hset car:1 color black
HGET

返回指定的哈希集中该字段所关联的值

127.0.0.1:6379> hget car:1 name
"BMW"
HKEYS

返回指定哈希集中的字段集合

127.0.0.1:6379> hkeys car:1
1) "name"
2) "price"
3) "color"
HGETALL

返回指定哈希集中所有字段和值

127.0.0.1:6379> hgetall car:1
1) "name"
2) "BMW"
3) "price"
4) "450000"
5) "color"
6) "black"
HEXISTS

返回哈希集中是否包含字段(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

Lists(列表类型)

列表类型存储的是一个有序的列表,列表类型的存储列表使用的是双向链表来实现的,所以通常在两端进行添加、删除操作

LPUSH

将所有指定的值插入到存于 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"
LRANGE

返回存储在 key 的列表里指定范围内的元素。 start 和 end 偏移量都是基于0的下标,即list的第一个元素下标是0(list的表头),第二个元素下标是1,以此类推。

127.0.0.1:6379> lrange list 0 4
1) "c"
2) "b"
3) "a"
LPOP

从列表头部移除第一个元素

127.0.0.1:6379> lpop list
"c"
127.0.0.1:6379> lrange list 0 4
1) "b"
2) "a"
LSET

根据索引的位置更新list列表中改位置的值

127.0.0.1:6379> lset list 0 a1
OK
127.0.0.1:6379> lrange list 0 4
1) "a1"
2) "a"
LLEN

返回列表的长度

127.0.0.1:6379> lrange list 0 4
1) "a1"
2) "a"
127.0.0.1:6379> llen list
(integer) 2
LINSERT

把 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"
LINDEX

返回列表里的元素的索引 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"
RPUSH

向存于 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"
RPOP

从列表尾部移除一个元素

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

Sets(集合类型)

集合类型中每个元素都不相同,切无序。

在Redis中,也可以对多个集合类型键之间进行并集、交集、差集运算。

SADD

添加一个或多个指定的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"
SMEMBERS

返回集合中的所有元素

127.0.0.1:6379> smembers set
1) "c"
2) "b"
3) "a"
SREM

在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"
SISMEMBER

判断某个值是否存在集合中

127.0.0.1:6379> smembers set
1) "c"
2) "b"
127.0.0.1:6379> sismember set b
(integer) 1
SCARD

返回集合中元素的数量

127.0.0.1:6379> smembers set
1) "c"
2) "a"
3) "b"
127.0.0.1:6379> scard set
(integer) 3
SDIFF

返回集合之间的差集

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"
SINTER

返回集合之间的交集

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"
SUNION

返回集合之间的并集

127.0.0.1:6379> sunion set set1
1) "b"
2) "a"
3) "c"
4) "d"
SMOVE

将某个集合中的元素移动到另一个集合中

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"
SPOP

从集合中移除一个或者多个随机元素

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

SORTED SET(有序集合)

有序集合:在集合类型的基础上有序集合类型为每个元素都关联一个分数,这使得我们不仅可以完成插入、删除、和判断元素、是否存在等集合类型支持操作。

有序集合类型和列表类型存在相似之处:

  1. 二者都是有序
  2. 二者都可以获得某一返回元素

不同之处:

  1. 列表类型是通过链表来实现的,获取两端得数据很快,但是获取中间得元素比较慢,所以比较适合实现“新鲜事”或者“日志”关注热点得应用
  2. 有序集合类型是使用散列表和跳跃表实现的,获取中间的数据比较快
  3. 列表中不能简单的调整某个元素的位置,但是有序集合可以
  4. 有序集合类型比列表类型更加废内存
ZADD

将所有指定成员添加到键为key有序集合(sorted set)里面。 添加时可以指定多个分数/成员(score/member)对。 如果指定添加的成员已经是有序集合里面的成员,则会更新改成员的分数(scrore)并更新到正确的排序位置。

如果key不存在,将会创建一个新的有序集合(sorted set)并将分数/成员(score/member)对添加到有序集合,就像原来存在一个空的有序集合一样。如果key存在,但是类型不是有序集合,将会返回一个错误应答。

添加参数
  • XX: 仅仅更新存在的成员,不添加新成员。
  • NX: 不更新存在的成员。只添加新成员。
  • CH: 修改返回值为发生变化的成员总数,原始是返回新添加成员的总数 (CH 是 changed 的意思)。更改的元素是新添加的成员,已经存在的成员更新分数。 所以在命令中指定的成员有相同的分数将不被计算在内。注:在通常情况下,ZADD返回值只计算新添加成员的数量。
  • INCR: 当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"
ZRANGE

返回存储在有序集合key中的指定范围的元素。 返回的元素可以认为是按得分从最低到最高排列。 如果得分相同,将按字典排序。

127.0.0.1:6379> ZRANGE hashset 0  10 
1) "a"
2) "b"
3) "c"
如果在命令后面加WITHSCORES 则会打印出当前值的分数
ZSCORE

获取某个元素的分数

127.0.0.1:6379> zscore hashset a
"2"
ZCARD

返回有序集合中元素的数量

127.0.0.1:6379> zcard hashset
(integer) 3
ZCOUNT

返回有序集合分数在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
ZREM

返回删除有序集合中存在的元素个数,不存在的则不计入

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"
ZRANK

返回有序集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

Redis-基础命令使用

原文:https://www.cnblogs.com/JackQiang/p/13226757.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!