Redis 的使用
安装$ brew install redis
检查安装: $ redis-server -v
Redis server v=6.0.3 sha=00000000:0 malloc=libc bits=64 build=5bce11175f58e836
启动$ brew services start redis
检查是否在运行: $ redis-cli ping
PONG
停止另,停止 Redis 可通过如下的命令: $ redis-cli shutdown
使用登录$ redis-cli
127.0.0.1:6379>
帮助使用前,了解下帮助,可方便使用过程中随时查阅。 127.0.0.1:6379> help
redis-cli 6.0.3
To get help about Redis commands type:
"help @<group>" to get a list of commands in <group>
"help <command>" for help on <command>
"help <tab>" to get a list of possible help topics
"quit" to exit
To set redis-cli preferences:
":set hints" enable online hints
":set nohints" disable online hints
Set your preferences in ~/.redisclirc
查看具体命令的帮助help rpop
RPOP key
summary: Remove and get the last element in a list
since: 1.0.0
group: list
基本存取SET server:name "fido"
GET server:name => "fido"
可通过 EXISTS server:name => 1
EXISTS server:blabla => 0
数值型的增减对于数值类型,Redis 提供了相应命令对其进行增减操作: SET connections 10
INCR connections => 11
INCR connections => 12
DEL connections
INCR connections => 1
除了上面步长为 1 的增减,也可使用 INCRBY connections 100 => 101
DECRBY connections 10 => 90
操作的原子性对于数字的增减,完全可以取出来后自己完成,比如: x = GET count
x = x + 1
SET count x
之所以提供对应的命令,是考虑到并发的问题。 假设对于同一 key,多个用户都读取后进行了增减操作,那么最后得到的值存在不确定性,比如:
这里 A B 都对同一字段进行了加 1 操作,期望得到 12 ,但实际得到的是 11。 如果 B 的操作是在 A 保存之后,则一切正常。 所以当并发时,就会存在时机上的不确定性。 使用 Redis 提供的方法进行操作时用户无需关心上面的时机问题,Redis 保证了操作的原子性的,防止了上面问题的出现。 EXPIRE & TTL存储时还可为 key 指定过期时间,过期后自动删除,以于一些临时和周期性数据特别有用。 设置过期时间SET resource:lock “redis demo”
EXPIRE resource:lock 120
或者,在 SET resource:lock “redis demo” ex 120
查看过期时间TTL = Time to Live,单位为秒。 查看还有多久过期: TTL resource:lock => 110
注意:重新 SET resource:lock “redis demo” ex 120
SET resource:lock “redis demo”
TTL resource:lock => -1
取消过期的设置SET resource:lock "Redis Demo 3" EX 5
PERSIST resource:lock
TTL resource:lock => -1
PEXPIRE and PTTL与 数组数据类型/list可用的操作:
数组元素的添加删除这里,可不事先创建 key,直接添加元素时会自动创建。 RPUSH friends “Bob”
EXISTS friends => 1
其中:
自动创建 key 的情形对其他类型数据也适用。 与自动创建 key 对应,如果执行命令后将 key 置空了,key 也会自动被删除。 RPUSH friends “Bob”
EXISTS friends => 1
RPOP friends
EXISTS friends => 0
LPUSH friends "Alice" "David"
取数组子集
LRANGE friends 0 -1 => 1) "Sam", 2) "Alice", 3) "Bob"
LRANGE friends 0 1 => 1) "Sam", 2) "Alice"
LRANGE friends 1 2 => 1) "Alice", 2) "Bob"
Set 数据类型类似数组,但元素无序且唯一,前者可快速访问首尾附近的元素,后者在确定元素是否存在上有优势。 可用操作:
与 其他操作还有:
SADD letters a b c d e f => 6
SPOP letters 2 => 1) "c" 2) "a"
有序 Set无序 Set 使用上会存在很多不便,Redis 1.2 引入了有序 Set。和常规 Set 雷同,只是每个元素有了自己的 score 值以标识顺序。 ZADD hackers 1940 "Alan Kay"
ZADD hackers 1906 "Grace Hopper"
ZADD hackers 1953 "Richard Stallman"
ZADD hackers 1965 "Yukihiro Matsumoto"
ZADD hackers 1916 "Claude Shannon"
ZADD hackers 1969 "Linus Torvalds"
ZADD hackers 1957 "Sophie Wilson"
ZADD hackers 1912 "Alan Turing"
ZRANGE hackers 2 4 => 1) "Claude Shannon", 2) "Alan Kay", 3) "Richard Stallman"
Hash 数据类型键值对形式,可表示对象。 HSET user:1000 name "John Smith"
HSET user:1000 email "john.smith@example.com"
HSET user:1000 password "s3cret"
或者同时设置多个字段: HMSET user:1001 name "Mary Jones" password "hidden" email "mjones@example.com"
获取: HGETALL user:1000
获取单个字段: HGET user:1001 name => "Mary Jones"
数值类型的字段对于数值类型的字段,同简单字符串一样,可对其进行增加或减少操作: 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
相关资源 |
The text was updated successfully, but these errors were encountered: |
![](https://licensebuttons.net/l/by-nc-sa/3.0/88x31.png)