redis学习(一)-redis数据结构和常用命令
redis 是基于内存的nosql数据库 具有速度快 可持久化等优点 其中单线程特点也可以作为分布式锁
redis 存在5大常用数据类型 分别为 string list set hset hash
redis 针对key的常用命令
keys * 查看所有的key
exists key 查看key是否存在
type key 查看key的类型
del key 删除key
expire key 10 给key设置10秒过期时间
dbsize key的数量
select 切换数据库
sting 是redis基本数据类型 其数据结构为简单字符串每次扩容1M最大支持512M数据 一个key 对应一个value 常用命令
set key value 添加键值对
*NX:当数据库中key不存在时,可以将key-value添加数据库
*XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
*EX:key的超时秒数
*PX:key的超时毫秒数,与EX互斥
get key 获取key对应的值
append key value 将指定的value 拼接到这个key的结尾
strlen key 获取key的长度
setnx key value 只有key不在时设置value
incr key 将指定的key加一
decr key 将指定的key减一
incrby/decrby key num 将指定的key 加/减 num
getrange key start end 获得值的范围,类似java中的substring,前包,后包
setrange key start value 用 <value> 覆写<key>所储存的字符串值,从<起始位置>开始(索引从0开始)。
setex key 过期时间 value 设置一个一个带有过期时间的key
getset key value 以旧换新
list 是简单的字符串列表 其数据结构快速链表quickList 按照插入顺序你可以插入一个数据到头部或者尾部 常用命令
lpush/rpush key value1 value2 value3.... 从左边/右边插入多个值
lpop/rpo key 从左边/右边吐出一个值。值在键在,值光键亡。
rpoplpush key1 key2 从<key1>列表右边吐出一个值,插到<key2>列表左边。
lrange <key><start><stop> 按照索引下标获得元素(从左到右)
lrange mylist 0 -1 0左边第一个,-1右边第一个,(0-1表示获取所有)
lindex <key><index>按照索引下标获得元素(从左到右)
llen <key>获得列表长度
linsert <key> before <value><newvalue>在<value>的后面插入<newvalue>插入值
lrem <key><n><value>从左边删除n个value(从左到右)
lset<key><index><value>将列表key下标为index的值替换成value
set 是一个可以自动排重的列表 常用命令
sadd key value1 value2 ... 将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略
smembers key 取出key的所有值
sismenber key value 判断该value 是否是该key的值
scard key 返回该key的集合个数
srem key value1 value2 移除key 中的元素
spop key 随机从该key中吐出一个值
srandmember key n 随机从该key中吐出n个值
smove <source><destination>value把集合中一个值从一个集合移动到另一个集合
sinter <key1><key2>返回两个集合的交集元素。
sunion <key1><key2>返回两个集合的并集元素。
sdiff <key1><key2>返回两个集合的差集元素(key1中的,不包含key2中的)
hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。类似Java里面的Map<String,Object> 常用命令
hset key field value 给key 中的field 赋值value
hget key field 从key 集合中取出 field 的值
hmset key field1 value1 field2 value .. 批量设置值
hexists key field 查看key 中 field 是否存在
hkeys key 列出 key 的所有field
hvals key 列出 key的所有 value
hincrby <key><field><increment>为哈希表 key 中的域 field 的值加上增量 1 -1
hsetnx <key><field><value>将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 .
zset与普通集合set非常相似。是一个带有评分没有重复元素的字符串集合
zadd key score1 value1 score2 value2 ... 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
zrang key start stop [WITHSCORES] 返回有序集 key 中,下标在<start><stop>之间的元素 带WITHSCORES,可以让分数一起和值返回到结果集
zrangebyscore key minmax [withscores] [limit offset count] 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。
zrevrangebyscore key maxmin [withscores] [limit offset count] 同上,改为从大到小排列。
zincrby <key><increment><value> 为元素的score加上增量
zrem <key><value>删除该集合下,指定值的元素
zcount <key><min><max>统计该集合,分数区间内的元素个数
zrank <key><value>返回该值在集合中的排名,从0开始。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?