美文网首页
Redis 入门

Redis 入门

作者: 不再更新_ | 来源:发表于2018-08-15 09:32 被阅读16次

Redis 是个键值对数据库。Redis 有 5 种数据类型,针对每种数据类型都提供了对应的一组命令用来操作该类型的数据。

String

最简单的使用方式是通过SET命令存入 String,通过GET命令读取 String。例如:

SET server:name "fido"
GET server:name => "fido"

还可以通过DEL来删除数据:

DEL server:name
GET server:name => nil

SET-if-not-exist 命令,SETNX

SETNX user:name "yuan"
GET user:name => "yuan"
SETNX user:name "haitao"
GET user:name => "yuan"

如果存储在数据库里的值是数字类型,还可以用INCR/DECRINCRBY/DECRBY来对数字进行增减操闽作:

SET user:age 30
INCR user:age => 31
DECR user:age => 30
INCRBY user:age 2 => 32
DECRBY user:age 3 => 29

nil进行增减操作,nil会被当作数字 0 处理。

DEL user:age => nil
INCR user:age => 1

INCRDECR是原子操作,意味着如果两个客户端同时对一个数据进行INCR操作,该数字会被增加 2。

EXPIRE命令用于设置某个 key 的过期时间,以秒为单位:

EXPIRE user:name 3

3 秒之后,user:name 上存储的数据将被删除。

TTL 命令用于查看某个 key 的过期时间。如果返回值为非负数,则为该 key 存在的剩余时间;如果返回 -1, 说明该 key 永不过期;如果返回 -2,说明该 key 已经不存在了。


List

Redis 还支持一些复杂的数据结构,例如 List。List 是一组有序的数据,常用于操作 List 的命令有:RPUSH, LPUSH, LLEN, LRANGE, LPOPRPOP
RPUSH 往 list 的末尾插入数据,LPUSH往 list 的首部插入数据,LRANGE用于获取 list 子集:

RPUSH friends "Alice"
RPUSH friends "Bob"
LPUSH friends "Sam"
LRANGE friends 0 -1 => 1) "Sam", 2) "Alice", 3) "Bob"

LLEN返回 list 长度,LPOP从 list 首部取出数据,RPOP从 list 尾部取出数据。


Set

Set 与 List 很相似,但是其中的数据并不是有序的,而且 Set 还有一个特点是,在一个 Set 中相同的数据只允许出现一次。用于操作 Set 的命令有:SADD, SREM, SISMEMBER, SMEMBERSSUNION
SADDSREM用于添加和删除数据;SISMEMBER用于判断指定的数据是否存在于 Set 当中,如果存在,返回 0,反之返回 1;SMEMBERS用于列出 Set 中的所有数据;SUNION用于返回两个 Set 合并之后的结果,由于 Set 不允许出现重复的数据,所以合并之后的结果中,重复的数据只会被保留一份。

SADD superpowers "flight"
SADD superpowers "x-ray vision"
SADD superpowers "reflexes"

SREM superpowers "reflexes"

SISMEMBER superpowers "flight" => 1
SISMEMBER superpowers "reflexes" => 0

SMEMBERS superpowers => 1) "flight", 2) "x-ray vision"

SADD birdpowers "pecking"
SADD birdpowers "flight"

SUNION superpowers birdpowers => 1) "pecking", 2) "x-ray vision", 3) "flight"

Sorted Set

Redis 1.2 引入了 Sorted Set 数据结构,顾名思义,这是个有序的 Set。Sorted Set 中每个数据都与一个 score 关联,这个 score 就用于排序。

ZADD命令用于往 Sorted Set 里添加数据,ZRANGE用于按下标获取 Sorted Set 的子集:

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用于给 Hash 赋值,HGET用于读取。HGETALL用于返回整个 Hash 的内容。HMSET可以同时给多个 key 设值。

HSET user:1000 name "John Smith"
HSET user:1000 email "john.smith@example.com"
HSET user:1000 password "s3cret"

HGETALL user:1000 => 1) "name" 2) "John Smith" 3) "email" 4) john.smith@example.com" 5) "password" 6) "s3cret"

HMSET user:1001 name "Mary Jones" password "hidden" email "mjones@example.com"

HGET user:1001 name => "Mary Jones"

Hash 里的值可以通过HINCRBY来进行数字增减。

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
HINCRBY user:1000 visits -1 => 0

相关文章

网友评论

      本文标题:Redis 入门

      本文链接:https://www.haomeiwen.com/subject/ankvbftx.html