Redis支持丰富的数据类型有:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)等
一.String类型
简介
String类型是Redis里最基本的数据类型,一个key最多可以存储512MB.
String类型数据结构是简单的key-value类型,value可以是任意类型.
String类型是二进制安全的,可以包含任何数据.
String命令
赋值语法
set key value //向数据库里存入一个key,key值重复会进行覆盖
setnx key value //如果Key不存在则设值,并返回1,如果存在则不设值并返回0
setex key1 过期时间单位秒 value //设置key值 并设置过期时间
取值语法
get key //获取指定的key的值
getrange key start stop //获取指定key中字符串的子字符串(取一段)包含start和end
getbit key offset //获取指定索引的字符
getset key value //设置key的值,b并返回key的旧值,key不存在就返回nil
strlen key //返回指定key的长度
删除语法
del key 删除指定的key
批量
mset key value key value 批量写入
mget key key 批量读出
自增
incr key //给数字值+1 key不存在则初始化为0
incrby key //增加指定的数值
自减
decr key //数字-1
decrby key //减去指定数值
字符串拼接
append key value
应用场景
- 1、String通常用于保存单个字符串或JSON字符串数据
- 2、因String是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储
- 3、计数器(常规key-value缓存应用。常规计数: 微博数, 粉丝数)
二.Hash类型
简介
Hash类型是String类型的field和value的映射表,或者说是一个String集合。
Hash类型特别适合存储一个对象
常用命令
赋值语法
hset key field value //为指定的key设置field和value
hset key field value field value //指定多个key设置field和value
取值语法
hget key field //获取指定key根据field获取值
hgetall key 返回表中所有的字段和值
hkeys key //返回hash表中所有的字段和值
hlen key //返回hash表中的字段数量
删除语法
hdel key field /删除一个或多个字段
hexists key field //查看key中指定的字段是否存在
应用场景
常用于存储一个对象
三.List类型
简介
List类型是一个链表结构的集合,其主要功能有push、pop、获取元素等。
我们可以通过相关的操作进行集合的头部或者尾部添加和删除元素
常用命令
赋值语法
lpush key value //左侧添加 头部
rpush //右侧添加 尾部
lpushx //添加到头部 如果不存在操作无效
rpushx //添加到尾部 如果不存在操作无效
取值语法
llen key //获取列表的长度
lindex key index //获取指定索引的元素
lrange key start stop //查看指定区间的元素 start=0 stop=-1则返回所有的元素(可以作为分页使用)
删除语法
lpop key //移除并获取第一个元素
rpop key //移除并获取最后一个元素
blpop key timeout //移除第一个元素 如果没有则等待 超时时间到后停止
ltrim key start stop //修剪 移除区间外的所有元素
修改语法
lset key index value //通过索引设置列表元素的值
linsert key befor||after world value //在指定元素之前或之后插入元素
高级命令
rpoplpush source destination //移除最后一个添加到指定集合的第一个
brpoplpush source destination timeout //从列表中弹出一个值,并返回他,如果没有就阻塞列表
应用场景
1、对数据量大的集合数据删减
2、任务队列
四.Set类型
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,set是通过hashtable实现的
常用命令
赋值语法
sadd key member //向集合中添加一个或多个元素
取值语法
scard key //返回集合成员数
smembers key //返回集合中所有成员
sismember key member //判断元素是否是这个集合里的成员
删除语法
srem key member //删除一个或多个成员
spop key //删除并返回一个或多个成员
smove source destination member //将成员移动到另一个集合
差集
sdiff key key //获取指定集合的差集
sdiffstore destination key key //返回给定集合的差集并存储在destination中
交集
sinter key key //返回给定集合的交集
sinterstore destination key key //返回给定集合的交集并存储在destination中
并集
sunion key key //返回给定集合的并集
sunion destination key key //返回给定集合的并集并保存到destination中
应用场景
1、利用集合操作,可以取不同兴趣圈子的交集,以非常方便的实现如共同关注、共同喜好、二度好友等功能。
2.利用唯一性可以统计网站的所有独立IP的活跃用户列表
五.Zset
简介
1、 Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
2、不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
3、有序集合的成员是唯一的,但分数(score)却可以重复。
4、集合是通过哈希表实现的。
常用命令
赋值语法
zadd key score member //向有序集合中添加一个或多个成员
取值语法
zcard key //获取有序集合的成员数
zcount key min max //获取有序集合中指定区间的成员数
zrank key member //返回有序集合中指定成员的索引
zrange key start stop //通过索引区间获取区间内的成员(升序)
删除语法
del key //删除集合
zrem member //删除有序集合中一个或多个元素
应用场景
1.销量排名
2.积分排名
3.队列权重
六.HyperLogLog
简介
Redis 在 2.8.9 版本添加了 HyperLogLog 结构。
Redis HyperLogLog 是用来做基数统计的算法.
HyperLogLog并不保存数据,只记录数量
常用命令
pfadd key element //添加指定元素到HyperLogLog中
pfcount key 返回给定HyperLogLog的技术估算值
pfmerge destkey sourcdkey 将多个HyperLogLog合并为一个
应用场景
1.统计文章真实阅读量
2.统计在线人数
3.统计每日访问ip数
如有错误联系更改 非常感谢