内容简介:保存一个字符串。值除了可以使用双引号,还可以使用单引号,甚至不用引号。然后我们可以通过 GET 命令获取它。当然我们也可以保存数字(貌似会以字符串的形式保存),并可以进行自增和自减。如果对一个不存在的键进行自增,会得到 1。
保存一个字符串。
SET server:name "fido" 复制代码
值除了可以使用双引号,还可以使用单引号,甚至不用引号。然后我们可以通过 GET 命令获取它。
GET server:name => "fido" 复制代码
当然我们也可以保存数字(貌似会以字符串的形式保存),并可以进行自增和自减。如果对一个不存在的键进行自增,会得到 1。
SET connections 10 INCR connections => 11 INCR connections => 12 DEL connections INCR connections => 1 复制代码
为什么这里会提供一个 INCR 呢?直接取键的值,然后加一,再赋值回去不行吗?原因是如果有多个客户端同时进行加一操作会出现问题。假设 客户端 A 得到一个键的值是 10,此时 客户端 B 也得到 10。然后客户端A设置值为 11,接着客户端 B 设置为 11。最后值是 11,而不是我们想要的 12。为了防止这种情况发生,我们把取值、加一、赋值这三个操作合并成一个 原子操作 INCR,就解决了上面的问题。
设置过期时间。
SET resource:lock "Redis Demo" EXPIRE resource:lock 120 复制代码
EXPIRE
命令设置的是键的有效时间,一旦过了这个时间,就会变成 nil。单位是秒。执行了 EXPIRE
命令后,如果想知道键还有多少秒过期,可以执行下面命令:
TTL resource:lock => 113 复制代码
如果一个键过期了, TTL
命令会返回 -2。如果返回的是 -1,说明这个键没有设置过过期时间,即永久存在。
列表(list)
列表的作用是存储一组数据。
RPUSH
和 LPUSH
分别可以在列表的右边和左边添加数据。我们可以一次添加多个元素。另外该该命令执行完,会返回列表的最终长度。
RPUSH friends "Alice" RPUSH friends "Bob" LPUSH friends "Sam" 复制代码
获取一个列表的内容,这里就不能用 GET
命令了,而要使用 LRANGE
命令。
LRANGE friends 0 -1 => 1) "Sam", 2) "Alice", 3) "Bob" LRANGE friends 1 2 => 1) "Alice", 2) "Bob" 复制代码
LRANCE
两个索引 start 和 end 值必须指定。索引从 0 开始。如果索引值为负数,表示 列表长度加上这个负数的索引。取值范围不是前闭后开,而是 前闭后闭
,即 [start, end]。如果start 比 end 大,会返回空列表。
LLEN
命令可以获取列表长度。 LPOP
命令可以移除列表的第一个元素并返回它。 RPOP
则是移除最后一个元素并返回它。
集合(set)
集合,用来存储一组不重复的数据。集合不保证有序,保证有序可以使用 有序集合(sorted set)。
(集合可以保存字符串之外的数据结构吗?)
SADD SREM SMEMBERS
SADD superpowers "flight" SADD superpowers "x-ray vision" SADD superpowers "reflexes" 复制代码
-
SISMEMBER
:检测值是否存在于集合中,1表示存在,0表示不存在
SISMEMBER superpowers "flight" => 1 复制代码
-
SUNION
:返回多个集合的并集(即,合并和去重)
有序集合 (sorted set)
ZADD
用于添加数据。
ZADD hackers 1940 "Alan Kay" ZADD hackers 1906 "Grace Hopper" 复制代码
这里我们给 hackers 有序集合添加了两个值,并设置了它们对应的分数(score)1940 和 1906。分数的值用于有序集合的排序,有序集合默认从小到大进行排序。不同值的分数可以相同,此时按照放入集合时的顺序排列。
ZRANGE
的用法类似 LRANGE
,需要给出键名、起点索引和终点索引,同样也是前闭后闭。
ZRANGE hackers 2 4 复制代码
如果你还想得到 scroe,可以在命令的最后添加 WITHSCORES
字典(hash)
hash 的翻译有很多,哈希表、散列表、字典,这些都是可以的。这里我就叫做字典好了。你可以把它看成一个用哈希表实现的对象。
HSET
可以给一个字典添加一个或多个键值对。
HSET user:1000 name "John Smith" HSET user:1000 email "john.smith@example.com" 复制代码
上面的操作等同于:
HMSET user:1000 name "John Smith" email "john.smith@example.com" 复制代码
如果想要获取一个字典的所有键值对,可以使用 HGETALL
命令。
HGETALL user:1000 复制代码
另外如果指向知道字典的某个键的值,可以使用 HGET
命令。
HGET user:1000 name "John Smith" 复制代码
字典中的数值类型的值,可以类似字符串类型那样进行加法运算等原子操作。
HSET user:1000 visits 10 HINCRBY user:1000 visits 1 => 11 HINCRBY user:1000 visits 10 => 21 HDEL user:1000 visits HINCRBY user:1000 visits 1 => 1 复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
分布式服务架构:原理、设计与实战
李艳鹏、杨彪 / 电子工业出版社 / 2017-8 / 89.00
《分布式服务架构:原理、设计与实战》全面介绍了分布式服务架构的原理与设计,并结合作者在实施微服务架构过程中的实践经验,总结了保障线上服务健康、可靠的最佳方案,是一本架构级、实战型的重量级著作。 《分布式服务架构:原理、设计与实战》以分布式服务架构的设计与实现为主线,由浅入深地介绍了分布式服务架构的方方面面,主要包括理论和实践两部分。理论上,首先介绍了服务架构的背景,以及从服务化架构到微服务架......一起来看看 《分布式服务架构:原理、设计与实战》 这本书的介绍吧!