本文是阅读 redis 官方提供的可交互入门教程而作的笔记。该官方教材带咱们快速了解了redis 的一些重要特性。本文在官方教程的基础上,加入了本人的一些简单知识扩充和对一些细节的说明。redis
redis 是一个键值对内存数据库。数据库
保存一个字符串。bash
SET server:name "fido"
复制代码
值除了可使用双引号,还可使用单引号,甚至不用引号。而后咱们能够经过 GET 命令获取它。flex
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。为了防止这种状况发生,咱们把取值、加1、赋值这三个操做合并成一个 原子操做 INCR,就解决了上面的问题。spa
设置过时时间。翻译
SET resource:lock "Redis Demo"
EXPIRE resource:lock 120
复制代码
EXPIRE
命令设置的是键的有效时间,一旦过了这个时间,就会变成 nil。单位是秒。执行了 EXPIRE
命令后,若是想知道键还有多少秒过时,能够执行下面命令:code
TTL resource:lock
=> 113
复制代码
若是一个键过时了,TTL
命令会返回 -2。若是返回的是 -1,说明这个键没有设置过过时时间,即永久存在。server
列表的做用是存储一组数据。对象
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
则是移除最后一个元素并返回它。
集合,用来存储一组不重复的数据。集合不保证有序,保证有序可使用 有序集合(sorted set)。
SADD
:给集合添加新的值。SREM
:将指定的值从集合中移除。SMEMBERS
能够查看集合的全部值。SADD superpowers "flight"
SADD superpowers "x-ray vision"
SADD superpowers "reflexes"
复制代码
SISMEMBER
:检测值是否存在于集合中,1表示存在,0表示不存在SISMEMBER superpowers "flight"
=> 1
复制代码
SUNION
:返回多个集合的并集(即,合并和去重)ZADD
用于添加数据。
ZADD hackers 1940 "Alan Kay"
ZADD hackers 1906 "Grace Hopper"
复制代码
这里咱们给 hackers 有序集合添加了两个值,并设置了它们对应的分数(score)1940 和 1906。分数的值用于有序集合的排序,有序集合默认从小到大进行排序。不一样值的分数能够相同,此时按照放入集合时的顺序排列。
ZRANGE
的用法相似 LRANGE
,须要给出键名、起点索引和终点索引,一样也是前闭后闭。
ZRANGE hackers 2 4
复制代码
若是你还想获得 scroe,能够在命令的最后添加 WITHSCORES
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
复制代码
这官方教程有点短耶。。
本文首发于本人的我的博客网站:blog.fstars.wang/2019/06/25/…