Redis数据结构简介

在这里插入图片描述

一.Redis中的字符串

1.1 SET 、GET和 DEL的使用示例

Redis:0>set hello world
"OK"

Redis:0>get hello
"world"

Redis:0>del hello
"1"

Redis:0>get hello
null

Redis:0>

1.2 INCR和DECR操作

Redis:0>get key
null

Redis:0>incr key
"1"

Redis:0>incrby key 15
"16"

Redis:0>decrby key 5
"11"

Redis:0>get key
"11"

Redis:0>set key 13
"OK"

Redis:0>incr key
"14"

1.3 子串操作和二进制位操作

-- 将字符串'hello'追加到目前不存在的'new-string-key'键里
Redis:0>append 'new-string-key' 'hello '
-- 返回当前长度
"6"

Redis:0>append 'new-string-key' 'world!'
"12"
-- Redis的索引以0开始,在进行范围访问时,范围的终点默认也包含在这个范围之内
Redis:0>getrange 'new-string-key' 3 7
"lo wo"
-- 对字符串执行范围设置操作
Redis:0>setrange 'new-string-key' 0 'H'
"12"

Redis:0>setrange 'new-string-key' 6 'W'
"12"
-- 查看字符串当前的值
Redis:0>get 'new-string-keyRedis:0>'
"Hello World!"
-- SETRANGE命令既可以用于替换字符串已有内容,也可以用于增长字符串
Redis:0>setrange 'new-string-key' 11 ', how are you?'
"25"
-- 前面执行的setrange命令移除尾部的感叹号,并将更多字符追加到了字符串末尾
Redis:0>get 'new-string-key'
"Hello World, how are you?"

Redis:0>setbit another-key 2 1
"0"

Redis:0>set bit another-key 7 1
"ERR syntax error"

Redis:0>setbit another-key 7 1
"0"

Redis:0>get another-key
"!"

二.Redis中的列表

2.1 RPUSH、LRANGE、 LINDEX 和LPOP的使用示例

-- 在向列表推入新元素之后,该命令会返回列表当前的长度
Redis:0>rpush list-key item
"1"

Redis:0>rpush list-key item2
"2"

Redis:0>rpush list-key item
"3"
-- 使用0为范围的起始索引,-1为范围的结束索引,可以取出列表包含的所有元素
Redis:0>lrange list-key 0 -1
 1)  "item"
 2)  "item2"
 3)  "item"
 -- 使用lindex可以从列表里面取出单个元素
Redis:0>lindex list-key 1
"item2"
-- 从列表里面弹出一个元素,被弹出的元素将不再存在于列表
Redis:0>lpop list-key
"item"
Redis:0>lrange list-key 0 -1
 1)  "item2"
 2)  "item"
Redis:0>

2.2 阻塞弹出命令以及元素移动命令

-- 将一些元素添加到两个列表里面
Redis:0>rpush list item1
"1"

Redis:0>rpush list item2
"2"

Redis:0>rpush list2 item3
"1"
-- 将一个元素从一个列表移动到另一个列表,并返回被移动的元素
Redis:0>brpoplpush list2 list 1
"item3"
-- 当列表不包括任何元素时,阻塞弹出操作会在给定的时限内等待可弹出的元素出现,并在时限到达后返回None
Redis:0>brpoplpush list2 list 1


Redis:0>lrange list 0 -1
 1)  "item3"
 2)  "item1"
 3)  "item2"
Redis:0>brpoplpush list list2 1
"item2"
-- BlPOP 命令会从左到右地检查传入的列表,并对最先遇到的非空列表执行弹出操作
Redis:0>blpop list list2 1
 1)  "list"
 2)  "item3"
Redis:0>blpop list list2 1
 1)  "list"
 2)  "item1"
 -- 因为刚刚我们item2移到list2中,所以list的元素到上一步完全弹完
Redis:0>blpop list list2 1
 1)  "list2"
 2)  "item2"
Redis:0>blpop list list2 1


Redis:0>

三.Redis中的集合

3.1 SADD、SMEMBERS、 SI SMEMBER和SREM的使用示例

-- 在向集合添加元素时,命令返回1表示元素被成功添加,返回0表示这个元素已经存在于集合中
Redis:0>sadd set-key item
"1"

Redis:0>sadd set-key item2
"1"

Redis:0>sadd set-key item3
"1"

Redis:0>sadd set-key item
"0"
-- 查看集合包含的元素数量
Redis:0>scard set-key
"3"
-- 获取集合包含的所有元素
Redis:0>smembers set-key
 1)  "item3"
 2)  "item2"
 3)  "item"
 -- 检查一个元素是否存在于集合中
Redis:0>sismember set-key item4
"0"

Redis:0>sismember set-key item
"1"
-- 移除集合中的元素,返回被移除元素的数量
Redis:0>srem set-key item2
"1"

Redis:0>srem set-key item2
"0"

Redis:0>smembers set-key
 1)  "item3"
 2)  "item"
Redis:0>

3.2 差集运算、并集运算、交集运算

-- 将一些元素添加到两个集合里面
Redis:0>sadd skey1 a b c d
"4"

Redis:0>sadd skey2 c d e f
"4"
-- 计算出从第一个集合里面移除第二个集合包含的所有元素的结果
Redis:0>sdiff  skey1 skey2
 1)  "b"
 2)  "a"
 -- 计算出同时存在于两个集合里面的所有元素
Redis:0>sinter skey1 skey2
 1)  "c"
 2)  "d"
 -- 计算出两个集合包含的所有各不相同的元素
Redis:0>sunion skey1 skey2
 1)  "d"
 2)  "a"
 3)  "b"
 4)  "c"
 5)  "e"
 6)  "f"
Redis:0>

四.Redis中的散列

4.1 HSET、HGET、HGETALL和HDEL的使用示例

-- 在尝试添加键值对到散列的时候,命令会返回一个值来表示给定的键是否已经存在于散列里面
Redis:0>hset hash-key sub-key1 value1
"1"

Redis:0>hset hash-key sub-key2 value2
"1"

Redis:0>hset hash-key sub-key1 value1
"0"
-- 获取散列包含的所有键值对
Redis:0>hgetall hash-key
 1)  "sub-key1"
 2)  "value1"
 3)  "sub-key2"
 4)  "value2"
 
 -- 删除键值对时候,命令会返回一个值来表示给定的值在移除之前是否存在于散列里面
Redis:0>hdel hash-key sub-key2
"1"

Redis:0>hdel hash-key sub-key2
"0"
-- 从散列里面获取某个键的值
Redis:0>hget hash-key sub-key1
"value1"

Redis:0>hgetall hash-key
 1)  "sub-key1"
 2)  "value1"
Redis:0>
Redis:0>hmset myhash field hello field2 world
"OK"

Redis:0>hmget myhash field1;
 1)  null
Redis:0>hmget myhash field
 1)  "hello"
Redis:0>hmget myhash field2
 1)  "world"
Redis:0>hlen myhash
"2"

Redis:0>hdel myhash field
"1"

Redis:0>hdel myhash field2
"1"

Redis:0>hlen myhash
"0"

Redis:0>

五.Redis的有序集合

5.1 ZADD,ZRANGE ,ZRANGEBYSCORE 和ZREM的使用示例

-- 在尝试向有序集合添加元素的时候,命令会返回新添加元素的数量
Redis:0>zadd zset-key 728 member1
"1"

Redis:0>zadd zset-key 982 member0
"1"

Redis:0>zadd zset-key 982 member0
"0"
-- 在获取有序集合包含的所有元素时,多个元素会按照分值大小进行排序
Redis:0>zrange zset-key 0 -1 withscores
 1)  "member1"
 2)  "728"
 3)  "member0"
 4)  "982"
 -- 用户也可以根据分值来获取有序集合中的一部分元素
Redis:0>zrangebyscore zset-key 0 800 withscores
 1)  "member1"
 2)  "728"
 -- 在移除有序集合元素的时候,命令会返回被移除元素的数量
Redis:0>zrem zset-key member1
"1"

Redis:0>zrem zset-key member1
"0"

Redis:0>zrange zset-key 0 -1 withscores
 1)  "member0"
 2)  "982"
Redis:0>
发布了142 篇原创文章 · 获赞 160 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/Milogenius/article/details/103634191