Redis从基础命令到核心机制简单介绍

发布时间:2026/7/30 10:04:23
Redis从基础命令到核心机制简单介绍 关系型数据库 XxxSQL有表结构要求 二维表-易于维护非关系型数据库 NoSQL只要不是关系型数据库 就是非关系型数据库数据模型比较简单、灵活性较强、数据库性能较高(运行在内存中)、数据一致性较关系型数据库较低、键值存储Redis列存储HBase文档型数据库MongoDb(json数据格式)图形数据库redis对于给定的key 可以映射复杂环境单线程的好处是内存操作极快高效利用CPU缓存、规避线程上下文切换的CPU损耗无需加锁保护共享数据架构简单易维护常见命令redis-cli[-a 密码]登录[密码]flushdb -- 清空当前库 flushall -- 清空所有数据库clear-- 清屏 keys * -- 查看全部的key keys 前缀* -- 查看指定前缀的key exists key -- 是否存在指定的key expire key 秒数 -- 设置key过期时间 persist key -- 取消key过期时间select0-15 -- 切换到指定数据库 dbsize -- 查看数据库key的数量 multi -- 开启事务(将几个操作挪到一起执行)key的设计唯一性可读性(key简短名义 太长也会影响内存)灵活性时效性(key过期)数据类型String包含字符串类型、数值类型(可以进行加减操作)命令setkey value -- 设置值 get key -- 获取value值 incr key -- 为key对应的value值1返回的是加后的值 decr key -- 为key对应的value值-1返回的是减后的值 del key -- 删除 setex key 秒数 value -- 设置key过期时间 ttl key -- 查看剩余存活时间 -1表示永远存在 -2表示已过期 setnx key value -- 为key设置值 有值无法放置 返回0没有值可以设置 返回1 incrby key num -- 为指定key 加几(减为加负数)mset key value key value..... -- 批量存入key-value append key 需要添加的字符串 -- 为指定key的value拼接字符串 setrange key 变更的节点值 变更的字符串 -- 为指定key的value在指定位置替换hash大key小key 取value命令hset KEY key value -- 设置值 hsetnx KEY key value -- 设置值 存在返回0不改变原值、不存在创建返回1 hget KEY key -- 获取指定value值 hexists KEY key -- 判断指定KEY中是否包含key hdel KEY key -- 删除key del KEY -- 删除KEY hincrby KEY key 需要添加的值 -- 为指定value添加指定的值(可以添加负数)hlen KEY -- 判断KEY 中有几个key hkeys KEY -- 查看KEY对应的所有key 无序的 hvals KEY -- 查看所有value hgetall KEY -- 查看所有的key value(1.key2.value3.key...)list用于用户收藏列表命令rpush key value1 value2....-- 设置list key和值 lrange key0-1-- 查看全部key的value lpop key -- 弹出list最左侧的数据 rpop key -- 弹出list最左侧的数据 llen key -- 获取列表长度 linsert key before/after 参照值 添加的值 -- 在参照值的前/后添加新值 lset key index value -- 根据索引修改数据 lrem key count value -- 在列表中按照指定个数删除数据 ltrim key 开始节点 结束节点 -- 截取为指定范围数据 lindex key index -- 根据指定索引取列表中的数据set无序且唯一应用场景抽奖命令sadd key value -- 添加数据 smembers key -- 列出指定set的全部value srem key value -- 删除指定集合的一个元素 spop key count -- 随机弹出count个数的元素并从原集合中删除 srandmember key count -- 随机选出count个数的元素原集合不改变sdiffkey1 key2 -- 取key1 相对 key2 的差集 sdiffstore var key1 key2 -- 返回key1 相对 key2 的差集 存储到var中 sinter key1 key2 -- 取两个集合的交集 sinter var key1 key2 -- 取两个集合的交集 存储到var中 sunion key1 key2 -- 返回两个集合的并集 sunion var key1 key2 -- 返回两个集合的并集 存储到var中 smove key1 key2 value -- 把key1 中的value放到key2 中 scard key -- 返回集合中元素个数 sismember key value -- 判断集合中是否包含valuesorted_set(zset)有序集合应用场景热搜 排行榜命令zadd key score column-- 存入分数和名称 zincrby key score column-- 给指定key的value分数偏移 ​ 例zincrby key-1javazrange key start end -- 按照分数升序输出column zrevrange key start end -- 按照分数降序输出column zrank keycolumn-- 升序返回指定column的排名 zrevrank keycolumn-- 降序返回指定column 的排名 zcard key -- 返回key的元素个数 zrangebyscore key min max -- 按照分数范围升序输出column zrevrangebyscore key max min -- 按照分数范围降序输出column zrem keycolumn-- 删除key中指定的column zremrangebyscore key max min -- 根据分数范围删除column zremrangebyrank key start end -- 根据排名删除column zcount key min max -- 按照分数范围统计个数持久化机制RDB(Redis DataBase)redis 默认的持久化方案AOF(Append Only File)appendfsync​ always同步持久化慢安全​ everysec出厂默认每秒异步记录一次​ no不同步内存淘汰机制及过期key处理内存淘汰机制LRULeast recently used长期不用的数据LFULeast Frequently Used 一段时间内使用最少TTL数据设置的过期时间即将过期内存不足时提前淘汰随机淘汰过期清除策略惰性删除访问key时发现过期了再删除对cpu友好对内存不友好(可以搭配TTL使用)定期删除隔一段时间对数据检查一次删除过期key定时删除设置key过期时间的同时创建定时器key到达过期时间立即删除(最不友好的方式)