redis实战
Redis实战
Redis简介
Redis数据结构简介
结构类型 | 结构存储的值 | 结构读写能力 |
---|---|---|
STRING | 字符串,整数,浮点数 | 对整个字符串或者字符串中一部分进行操作,对整数和浮点数进行自增或者自减操作 |
LIST | 链表,链表上每个节点都包含了字符串 | 两边推入或者弹出元素,根据偏移量对链表进行修剪(trim),读取多个或者单个元素,根据值查询护着移除元素 |
SET | 包含字符串的无序收集器,并且每个字符串独一无二 | 添加,获取,移除单个元素,检查元素是否在集合中,交集,并集,差集,从集合里随机获取元素 |
HASH | 包含键值对的无序列表 | 添加,获取,移除单个键值对,获取所有键值对 |
ZSET(有序集合) | 字符串成员与浮点数分之之间的有序映射,元素的排列顺序由分值大小决定 | 添加,获取,删除单个元素,根据分值范围或者成员获取元素 |
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中的列表
- 列表中,相同的元素可以重复出现
- 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
- “item”
- “item2”
127.0.0.1:6379> lrange list-key 0 -2- “item”
127.0.0.1:6379> lindex list-key 1
“item2”
127.0.0.1:6379> lpop list-key
“item”
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
- “item2”
- “item”
- “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- “item2”
- “item3”
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
- “key1”
- “val1”
- “key2”
- “val2”
127.0.0.1:6379> hdel hash-key key1
(integer) 1
127.0.0.1:6379> hgetall hash-key- “key2”
- “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中唯一一个既可以根据成员访问元素,又可以根据分值以及分值的排列顺序来访问元素的结构
-
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
- “member0”
- “meber1”
127.0.0.1:6379> zrange zset-key 0 -1 withscores - “member0”
- “89”
- “meber1”
- “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 - “meber1”
- “728”