基础
| |
| |
| set <key> <value> |
| keys * |
| exists key |
| type key |
| del key |
| unlink key |
| expire key 10 |
| ttl key |
| select 2 |
| dbsize |
| flushdb |
| flushall |
| clear |
| |
Redis中基本数据类型操作:https://blog.csdn.net/hzlarm/article/details/99432240
String
| # 是二进制安全的,可包含任何数据,如图片、序列化对象; |
| # 一个String类型的字符串中value最大为512M |
| # 常用命令: |
| set <key> <value> # 添加键值对 |
| get <key> # 查询对应键值 |
| append <key> <value> # 将<value> 追加到指定key原值的末尾 |
| strlen <key> # 获得值的长度 |
| setnx <key> <value> # 只有在 key 不存在时,设置 key 的值,存在时则不会覆盖;而set命令,当key存在时会覆盖 |
| incr <key> # 将 key 中储存的数字值增1;只能对数字值操作,如果为空,新增值为1 |
| decr <key> # 将 key 中储存的数字值减1;只能对数字值操作,如果为空,新增值为-1 |
| incrby / decrby <key> <步长> 将 key 中储存的数字值增减;例如incrby k2 100 表示在k2的原值上加100 |
| |
| # 对redis的操作是原子性,因为redis是单线程+多路IO复用 |
| |
| mset <key1> <value1> <key2> <value2> # 同时设置一个或多个 key-value对 |
| mget <key1> <key2> <key3> # 同时获取一个或多个 value |
| msetnx <key1> <value1> <key2> <value2> # 同时设置一个或多个 key-value 对,原子性,有一个失败则都失败,有一个key存在则全部设置失败 |
| getrange <key> <起始位置> <结束位置> # 获取指定key的value的指定索引位置的值 |
| setrange <key> <起始位置> <value> # 用 <value> 覆盖 指定<key>所储存的字符串值,从<起始位置>开始(索引从0开始) |
| setex <key> <过期时间> <value> # 设置键值的同时,设置过期时间,单位秒 |
| getset <key> <value> # 以新换旧,设置了新值同时获得旧值 |
| |
List
| |
| |
| |
| lpush/rpush <key> <value1> <value2> <value3> |
| |
- 例如插入一个list集合k1,list集合中的值为v1, v2, v3

因为是从左边插入值,所以最先插入的值被挤到了最右边
- 例如从左边取出k1集合中的一个值

| rpoplpush <key1><key2> # 从<key1>列表右边吐出一个值,插到<key2>列表左边。 |
| lrange <key> <start> <stop> # 按照索引下标获得元素(从左到右) |
| lrange k1 0 -1 # 0左边第一个,-1右边第一个,0-1表示获取所有;这里表示获取k1集合中的所有值 |
| lindex <key> <index> # 按照索引下标获得元素(从左到右) |
| llen <key> # 获得列表长度 |
| linsert <key> before <value> <newvalue> # 在<value>的后面插入<newvalue>插入值 |
| lrem <key> <n> <value> # 从左边删除n个value(从左到右) |
| lrem k1 2 v1 # 当k1集合中有多个相同的value,可以删除k1集合中2个值为v2的value,从左往右开始删除 |
| Lset <key> <index> <value> # 将列表key下标为index的值替换成value |
| |
Set
| # set类型的数据结构是dict字典,字典是用哈希表实现的,所有value都指向同一个内部值 |
| # 无序集合,自动排重(去重) |
| sadd <key> <value1> <value2> # 将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略 |
| |
- 例如k1是一个set集合,向该集合添加数据v1, v2, v3


| sismember <key> <value> # 判断集合<key>是否含有该<value>值,有则返回1,没有返回0 |
| scard <key> # 返回该集合的元素个数。 |
| srem <key> <value1> <value2> # 删除集合中的某个元素。 |
| spop <key> # 随机从该集合中取出一个值,取出来后,该集合就没有这个值了 |
| srandmember <key> <n> # 随机从该集合中取出n个值;不会从集合中删除 |
| smove <source> <destination> value # 把集合中一个值移动到另一个集合;smove k1 k2 v2 # 表示从集合k1中的v2移动到k2集合 |
| sinter <key1> <key2> # 返回两个集合的交集元素。 |
| sunion <key1> <key2> # 返回两个集合的并集元素。 |
| sdiff <key1> <key2> # 返回两个集合的差集元素(key1中的,不包含key2中的) |
| |
Hash
| # hash类型底层的数据结构:ziplist(压缩列表:长度较短个数较少时使用)、hashtable(哈希表) |
| # hash是一个键值对集合,类似Java中的Map<String,Object>;key是键,value是一个对象(field和value的映射表) |
| hset <key> <field> <value> # 给<key>集合中的 <field>键赋值<value> |
| |
- 例如:key是user1,value是id=1,fieid是id,key是一个hash集合

| hget <key1> <field> # 从<key1>集合取出<field>的 value |
| hmset <key1> <field1> <value1> <field2> <value2> # 批量设置hash的值 |
| Hexists <key1> <field> # 查看哈希表 key 中的 field 是否存在 |
| hkeys <key> # 列出该hash集合的所有field |
| hvals <key> # 列出该hash集合的所有value |
| hincrby <key> <field> <increment> # 为哈希表 key 中的域 field 的值加上增量,正数为加,负数为减 |
| |
- 例如:user1中的id为1,在之上加上20

| hsetnx <key> <field> <value> # 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 ,若该field已存在则会报错 |
| |
Zset
| # Zset是一个有序不重复的集合,集合中的每个成员都关联一个评分(score),集合中成员是唯一的,评分可以重复 |
| # Zset底层的数据结构: |
| i. Hash Map<field value> field是评分,value是成员 |
| ii. 跳跃表 |
| zadd <key> <score1> <value1> <score2> <value2> # 将一个或多个 member 元素及其 score 值加入到有序集 key 当中 |
| |
- 例如向课程集合中添加课程和对应的评分

| zrange <key><start><stop> [WITHSCORES] # 查询集合中指定下标在<start><stop>之间的值,带WITHSCORES,可以让分数一起和值返回到结果集 |
| |
- 例如返回课程集合中下标是0到2的值,返回的结果集是根据分数从小到大排序

| zrangebyscore <key> <min> <max> [withscores] [limit offset count] # 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员,有序集成员按 score 值递增(从小到大)次序排列;加上withscores会同时显示分数 |
| |
- 例如:返回评分是10到30之间的value

| zrevrangebyscore <key> <max> <min> [withscores] [limit offset count] # 同上,改为从大到小排列 |
| zincrby <key> <increment> <value> # 为元素的score加上增量 |
| |
- 例如为Java加上20,Java的分数就变成了40

| zrem <key> <value> # 删除该集合下,指定值的元素 |
| |
- 例如删除集合下的js

| zcount <key> <min> <max> # 统计该集合,分数区间内的元素个数 |
| |
- 例如统计分数在0到30之间的个数:

| zrank <key> <value> # 返回该值在集合中的排名,从0开始 |
| |
- 例如返回Java的排名:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术