Redis(2)- 常用数据结构
1.Redis常用数据类型结构
1.1.字符串类型
设置、获取、删除字符串
字符串指令 | ||||
序号 | 作用 | 指令 | 参数 | 示例 |
1 | 截取字符串内容 | GETRANGE | 截取范围的起始下标 | redis > GETRANGE email 0 3 |
2 | 获得字符串长度 | STRLEN | redis > STRLEN email | |
3 | 设置带有过期时间(秒)的KEY_VALUE | SETEX | 时间 | redis > SETEX city 5 Beijing |
4 | 设置带有过期时间(毫秒)的KEY_VALUE | FSETEX | 时间 | redis > FSETEX city 5 Beijing |
5 | 设置多个KEY_VALUE | MSET | redis > MSET username lisi age 18 | |
6 | 获得多个VALUE | MGET | redis > MGET username age | |
7 | 在字符串结尾追加内容 | APPEND | 添加内容 |
redis > SET temp ABCD redis > APPEND temp 1234 |
8 | 数字自增加1 | INCR |
redis > INCR num |
|
9 | 数字加上指定的整数值 | INCRBY | 数值 |
redis > INCRBY num 25 |
10 | 数字加上指定的浮点数 | INCRBYFLOAT | 数值 |
redis > INCRBYFLOAT num 3.5 |
11 | 数字自增减1 | DECR | 数值 |
redis > DECR num |
12 | 数字减去指定的整数值 | DECRBY | 数值 |
redis > DECRBY num 10 |
1.2.哈希类型
哈希类型可以通俗的理解为字典类型
哈希指令 | ||||
序号 | 作用 | 指令 | 参数 | 示例 |
1 | 设置哈希表字段 | HSET | 字段和值 |
redis > HSET student name lisi redis > HSET student age 14 |
2 | 设置哈希表多个字段 | HMSET | 字段和值 | redis > HMSET student name lisi age 14 |
3 | 获得哈希表字段值 | HGET | 字段 |
redis > HGET student name redis > HGET student age |
4 | 获得多个哈希表字段值 | HMGET | 字段 | redis > HMGET student age name |
5 | 获得所有哈希表字段值 | HGETALL | redis > HGETALL student | |
6 | 获得所有哈希表字段名 | HKEYS | redis > HKEYS student | |
7 | 获得哈希表中的字段数量 | HLEN | redis > HLEN student | |
8 | 判断哈希表中是否存在某个字段 | HEXISTS | 字段 | redis > HEXISTS student name |
9 | 获得哈希表的所有字段值 | HVALS | redis > HVALS student | |
10 | 删除哈希表的字段 | HDEL | 字段 | redis > HDEL student name age |
11 | 让哈希表中某个字段值加上指定的整数值 | HINCRBY | 数值 | redis > HINCRBY student age 10 |
12 | 让哈希表中某个字段值加上指定的浮点数 | HINCRBYFLOAT | 数值 | redis > HINCRBYFLOAT student age 0.5 |
注意:哈希字段没有减法,通过加法在数值前面加-号实现减法功能
1.3.列表类型
Redis列表和python列表一样,元素可以重复
列表指令 | ||||
序号 | 作用 | 指令 | 参数 | 示例 |
1 | 获得列表长度 | LLEN |
redis > LLEN dname
|
|
2 | 获得列表某个元素 | LINDEX | 下标 |
redis > LINDEX dname 0 获取下标为0的元素 |
3 | 在某个位置插入元素 | LINSERT |
BEFORE AFTER |
redis > LINSERT dname BEFORE 秘书处 董事会 在秘书处前面插入董事会 redis > LINSERT dname AFTER 董事会 董事长 在董事会后面插入董事长 |
4 | 删除列表最左边的元素 | LPOP | redis > LPOP dname | |
5 | 删除列表最右边的元素 | RPOP | redis > RPOP dname | |
6 | 删除列表某个元素 | LREM |
redis > LREM student zhangsan 删除张三 redis > LREM student 1 lisi 删除第1个李四,这个1不是索引序号,第几次出现 |
|
7 | 声明列表/(声明同时默认:向列表右侧添加内容) | RPUSH | redis >RPUSH class first | |
8 | 向列表最左侧添加内容 | LPUSH |
redis >RPUSH subject 语文 数学 英语 redis >LPUSH subject 政治 历史 物理 redis >lrange subject 2 5 政治、语文、数学、英语 这个地方容易理解错,LPUSH左侧添加,同时添加多个时,最后一个添加的才是左侧第一个 |
1.4.集合类型
Redis集合元素不可以重复,Redis集合中的元素根据hash算法存放的,没有下标这么一说
![](https://img2022.cnblogs.com/blog/2281865/202205/2281865-20220511205835007-1843002709.png)
集合指令 | ||||
序号 | 作用 | 指令 | 参数 | 示例 |
1 | 声明集合 | sadd |
redis > sadd empno 8001 redis > sadd empno 8002 |
|
2 | 输出集合元素 | smembers |
redis > smembers empno |
|
3 | 获得集合长度 | scard |
redis > scard empno |
|
4 | 判断是否含有某个元素 | sismember | redis > sismember empno 8001 | |
5 | 删除元素 | srem | redis > srem empno 8001 | |
6 | 随机删除并返回集合的某个元素 | spop |
redis > srem empno |
|
7 | 随机返回集合中的元素 | srandmember |
redis > srandmember empno 5 随机返回empno集合中5个元素 |
1.5.有序集合类型
有序集合指令 | ||||
序号 | 作用 | 指令 | 参数 | 示例 |
1 | 声明有序集合 | zadd |
redis > zadd keyword 0 "鹿晗" |
|
2 | 按照分数值降序输出集合元素 | zrevrange |
redis > zrevrange keyword 0 -1 |
|
3 | 元素分数值增加 | zincrby |
redis > zincrby keyword 1 "鹿晗" |
|
4 | 获得有序集合长度 | zcard | redis > zcard keyword | |
5 | 查询某个分数值区间内的元素数量 | zcount |
redis > zcount keyword 5 10 查询分数值在5-10区间内的元素数量 |
|
6 | 返回元素的分数值 | zscore | redis > zscore keyword "马云"
|
|
7 | 按照分数值升序输出集合元素 | zrange |
redis > zrange keyword 0 -1 |
|
8 | 获得分数值区间内的集合内容(升序) | zrangebyscore |
redis > zrangebyscore keyword 5 10 大于等于5小于等于10区间内元素升序输出 redis > zrangebyscore keyword 5 (10 大于等于5小于10区间内元素升序输出 redis > zrangebyscore keyword (5 10 大于5小于等于10区间内元素升序输出 redis > zrangebyscore keyword 10000 +inf 大于等于10000到正无穷区间内元素升序输出 redis > zrangebyscore keyword -inf 10 负无穷到10区间内元素升序输出 |
|
9 | 获得分数值区间内的集合内容(降序) | zrevrangebyscore |
redis > zrevrangebyscore keyword 10 5 5-10区间内(闭区间)元素降序输出 |
|
10 | 获得元素的升序排名(从0开始) | zrank |
redis > zrank keyword "鹿晗" |
|
11 | 获得元素的降序排名(从0开始) | zrevrank | redis > zrevrank keyword "鹿晗" | |
12 | 删除有序结合中的元素 | zrem | redis > zrem keyword "马云" "鹿晗" | |
13 | 删除排名区间内的元素 | zremrangebyrank | redis > zremrangebyrank keyword 0 0 | |
14 | 删除分数值区间内的元素 | zremrangebyscore | redis > zremrangebyscore keyword -inf (101 |
![](https://img2022.cnblogs.com/blog/2281865/202205/2281865-20220511213420786-1512222989.png)
2.Redis中常用命令
Redis的Key命令
Key命令 |
||||
序号 | 作用 | 指令 | 参数 | 示例 |
1 | 删除记录 | del |
redis > del keyword |
|
2 | 判断是否存在某个key | exists |
redis > exists empno |
|
3 | 设置记录过期时间(秒) | expire |
redis > expire empno 5 |
|
4 | 设置记录过期时间(毫秒) | pexpire |
redis > pexpire empno 5 |
|
5 | 设置记录的过期时间秒(UNIX时间戳) | expireat |
redis > expire empno 1652339100 |
|
6 | 设置记录的过期时间毫秒(UNIX时间戳) | pexpireat |
redis > zadd keyword 0 1652339100000 |
|
7 | 把记录迁移到其他逻辑库 | move |
redis > move empno 1 |
|
8 | 修改key名称 | rename | redis > rename empno emp | |
9 | 移除过期时间 | persist | redis > rename empno emp | |
10 | 判断value数据类型 | type | redis > rename empno emp |
![](https://img2022.cnblogs.com/blog/2281865/202205/2281865-20220512144556346-688833308.png)