Redis作为高性能的键值数据库,其核心魅力之一就是丰富的数据类型。今天我们就来彻底解析Redis的五种核心数据类型,帮你打好Redis基础!
Redis五种核心数据类型概览
- String(字符串)
- Hash(哈希,类似Java中的Map)
- List(列表,类似LinkedList)
- Set(集合,类似HashSet)
- Zset(有序集合)
一、核心概念与最佳实践
1. Key命名规范
关键点:命名不宜过长,影响检索效率
原理:Redis的key搜索采用从短到长的匹配策略,过长的key会降低查询速度
2. 二进制安全特性
重要区别:
- MySQL等关系型数据库:二进制不安全,容易出现乱码
- Redis:二进制安全,无乱码风险
原因:Redis仅在客户端进行编解码,避免了服务端频繁编解码带来的性能损耗和数据丢失风险。
二、String(字符串)类型
常用命令速览
SET key value # 设置键值
GET key # 获取值,key不存在返回(nil)
DEL key # 删除键,返回删除数量
GETSET key value # 先获取后修改
INCR key # 自增1,不存在则初始化为0
DECR key # 自减1
APPEND key value # 追加字符串
INCRBY key increment # 指定步长自增
DECRBY key increment # 指定步长自减
三、Hash(哈希)类型
优势:占用磁盘空间极少
常用命令大全
HSET key field value # 设置单个字段
HMSET key field1 value1 field2 value2 # 设置多个字段
HGET key field # 获取字段值
HMGET key field1 field2 # 获取多个字段值
HGETALL key # 获取所有字段和值
HDEL key field # 删除字段
DEL key # 删除整个哈希
HINCRBY key field increment # 字段值自增
HEXISTS key field # 判断字段是否存在
HLEN key # 获取字段数量
HKEYS key # 获取所有字段名
HVALS key # 获取所有字段值
四、List(列表)类型
应用场景:大数据集合增删、任务队列
常用命令详解
LRANGE key start end # 获取索引范围内元素
LPUSH key value1 value2 # 头部插入元素
RPUSH key value1 value2 # 尾部插入元素
LPOP key # 弹出头部元素
RPOP key # 弹出尾部元素
LLEN key # 获取元素个数
LREM key count value # 删除指定数量元素
LSET key index value # 通过索引替换元素
LINSERT key BEFORE/AFTER pivot value # 在指定元素前后插入
高级应用:任务队列
RPOPLPUSH resource destination # 原子操作:弹出尾部并加入另一列表头部
五、Set(集合)类型
特点:最大存储42亿元素,支持集合运算
常用命令集锦
SADD key member1 member2 # 添加元素
SREM key member1 member2 # 删除元素
SMEMBERS key # 获取所有元素
SISMEMBER key member # 判断元素是否存在
SCARD key # 获取元素数量
SRANDMEMBER key # 随机返回一个元素
集合运算(核心优势)
SDIFF key1 key2 # 差集:属于key1不属于key2
SINTER key1 key2 # 交集
SUNION key1 key2 # 并集
SINTERSTORE destination key1 key2 # 将交集结果存储
六、Zset(有序集合)类型
核心应用:排行榜系统
常用命令全集
ZADD key score1 member1 score2 member2 # 添加带分数成员
ZSCORE key member # 获取成员分数
ZCARD key # 获取成员数量
ZREM key member1 member2 # 删除成员
ZRANGE key start end [WITHSCORES] # 按分数升序获取成员
ZREVRANGE key start stop [WITHSCORES] # 按分数降序获取成员
ZINCRBY key increment member # 增加成员分数
ZCOUNT key min max # 统计分数范围内成员
ZRANK key member # 获取成员升序排名
ZREVRANK key member # 获取成员降序排名
七、通用命令汇总
KEYS pattern # 查找匹配的key
DEL key1 key2 # 批量删除
EXISTS key # 判断key是否存在
RENAME key newkey # 重命名key
TYPE key # 获取key类型
EXPIRE key seconds # 设置过期时间(秒)
TTL key # 查看剩余生存时间
实战小贴士
- 键值对删除:当某个key中的所有字段被删除后,该key会自动移除
- Jedis连接:Java操作Redis时,注意配置防火墙和连接池
- 二进制安全:在Java中设置的值,在Redis中存储为二进制,只有在Java客户端获取时才进行解码
掌握这五种数据类型,你就掌握了Redis的核心功能!每种类型都有其独特的应用场景,在实际开发中要根据需求灵活选择。