redis实战

Redis实战

Redis简介

Redis数据结构简介

结构类型 结构存储的值 结构读写能力
STRING 字符串,整数,浮点数 对整个字符串或者字符串中一部分进行操作,对整数和浮点数进行自增或者自减操作
LIST 链表,链表上每个节点都包含了字符串 两边推入或者弹出元素,根据偏移量对链表进行修剪(trim),读取多个或者单个元素,根据值查询护着移除元素
SET 包含字符串的无序收集器,并且每个字符串独一无二 添加,获取,移除单个元素,检查元素是否在集合中,交集,并集,差集,从集合里随机获取元素
HASH 包含键值对的无序列表 添加,获取,移除单个键值对,获取所有键值对
ZSET(有序集合) 字符串成员与浮点数分之之间的有序映射,元素的排列顺序由分值大小决定 添加,获取,删除单个元素,根据分值范围或者成员获取元素

Redis中的字符串

redis实战

  • Redis的字符串和其他编程语言或者其他键值存储提供的字符串非常相似
  • GET(获取值),SET(设置值),DEL(删除值)

127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
“world”
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hell
(nil)

Redis中的列表

redis实战

  • 列表中,相同的元素可以重复出现
  • LPUSH(将元素推入列表左端),RPUSH(将元素推入列表右端)
  • LPOP(弹出左边元素),RPOP(弹出右边元素)
  • LINDEX(用于获取列表在给定位置上的元素)
  • LRANGE(用于获取列表在给定范围上的所有元素)

127.0.0.1:6379> rpush list-key item
(integer) 1
127.0.0.1:6379> rpush list-key item2
(integer) 2
127.0.0.1:6379> rpush likt-key item
(integer) 1
127.0.0.1:6379> lrange list-key 0 -1

  1. “item”
  2. “item2”
    127.0.0.1:6379> lrange list-key 0 -2
  3. “item”
    127.0.0.1:6379> lindex list-key 1
    “item2”
    127.0.0.1:6379> lpop list-key
    “item”

Redis中的集合

redis实战

  • Redis中的集合和列表都可以存储多个字符串,但是集合中每个字符串是各不相同的
  • SADD(将元素添加到集合)
  • SREM(从集合中移除元素)
  • SISMEMBER(快速检查一个元素是否存在集合中)
  • SMEMBERS(获取所有元素,但是集合包含大量元素时不推荐使用)

127.0.0.1:6379> sadd set-key item
(integer) 1
127.0.0.1:6379> sadd set-key item2
(integer) 1
127.0.0.1:6379> sadd set-key item3
(integer) 1
127.0.0.1:6379> sadd set-key item
(integer) 0
127.0.0.1:6379> smembers set-key

  1. “item2”
  2. “item”
  3. “item3”
    127.0.0.1:6379> SISMEMBER set-key item2
    (integer) 1
    127.0.0.1:6379> SISMEMBER set-key item
    (integer) 1
    127.0.0.1:6379> SISMEMBER set-key item4
    (integer) 0
    127.0.0.1:6379> srem set-key item
    (integer) 1
    127.0.0.1:6379> SMEMBERS set-key
  4. “item2”
  5. “item3”

Redis中的散列

redis实战

  • Redis的散列可以村村多个键值对之间的映射
  • 散列存储的键可以是字符串又可以是数字值,用户同样可以对散列存储的数字值进行自增或者自减操作
  • HSET(在散列里关联给定的键值对)
  • HGET(获取指定散列键的值)
  • HGETALL(获取散列中的所有键值对)
  • HDEL(如果给定的键在散列中,那么移除这个键)

127.0.0.1:6379> hset hash-key key1 val1
(integer) 1
127.0.0.1:6379> hset hash-key key2 val2
(integer) 1
127.0.0.1:6379> hset hash-key key1 val1
(integer) 0
127.0.0.1:6379> hgetall hash-key

  1. “key1”
  2. “val1”
  3. “key2”
  4. “val2”
    127.0.0.1:6379> hdel hash-key key1
    (integer) 1
    127.0.0.1:6379> hgetall hash-key
  5. “key2”
  6. “val2”
    127.0.0.1:6379> hget hash-key key1
    (nil)
    127.0.0.1:6379> hget hash-key key2
    “val2”
    127.0.0.1:6379>

Redis中的有序集合

redis实战

  • 有序集合和散列一样,都用于存储键值对

  • 有序集合里的值被称为分值,分值必须为浮点数

  • 有序集合是Redis中唯一一个既可以根据成员访问元素,又可以根据分值以及分值的排列顺序来访问元素的结构

  • ZADD()将一个带有给定分值的成员添加到有序集合里面

  • ZRANGE()数据元素在有序排序中所为的位置,从有序集合里获取多个元素

  • ZRANGEBYSCORE()获取有序集合在给定范围内的所有元素

  • ZREM()如果给定成员存在于有序集合,那么移除这个成员

127.0.0.1:6379> zadd zset-key 728 meber1
(integer) 1
127.0.0.1:6379> zadd zset-key 89 member0
(integer) 1
127.0.0.1:6379> zrange zset-key 0 -1

  1. “member0”
  2. “meber1”
    127.0.0.1:6379> zrange zset-key 0 -1 withscores
  3. “member0”
  4. “89”
  5. “meber1”
  6. “728”
    127.0.0.1:6379> zrem zset-key member0
    (integer) 1
    127.0.0.1:6379> zrem zset-key member0
    (integer) 0
    127.0.0.1:6379> zrange zset-key 0 -1 withscores
  7. “meber1”
  8. “728”