Redis常用数据类型
# Redis
简介
Nosql:非关系型数据库,作为关系型数据库的补充
作用:应对基于海量用户和海量数据前提下的数据处理问题
特征:
-
数据间没有必然的关联联系
-
内部采用单线程机制进行工作
-
可扩容,可伸缩
-
大数据量下高性能
-
高可用
-
灵活的数据模型
- string
- list
- set
- hash
- Zset
应用:
- 热点数据存储
- 任务队列:秒杀、抢购、购票排队
- 即时信息查询
- 时效性
- 分布式数据共享
- 消息队列
- 分布式锁
安装
基本操作
string
数据未获取到 显示nil
key的命名约定
基本操作
- 添加 set
- 添加多个mset
- 获取 get
- 获取多个 mget
- 删除 del
- 获取数据字符个数 strlen
扩展操作
- 追加信息到原始信息后面 append key value
- 设置数据增加(可以用于控制数据库表主键id)
- 自增加一 incr key
- 增加指定范围 incrby key increment(指定范围)
- 增加小数 incrbyfloat
- 设置数据减少
- 减少一 decr key
- 减少指定范围 ncrby key increment(指定范围)
- 设置数据生命周期 多次设置第二次的会覆盖第一次的
- setex key seconds value
- psetex key milliseconds value
hash类型
定义
-
对一系列存储的数据进行编组,方便管理(存储对象信息)
-
存储结构:一个存储空间保持多个键值对
基本操作
- 添加 hset key field value
- 获取 hget key field
- 获取所有 hgetall key
- 删除 key field1( field2)
扩展操作
- 获取哈希表中所有的字段名或字段值
- hkeys key (相当于获取所有field)
- hvals(相当于获取所有value)
- 设置指定字段的数值数据
- hincrby key field increment
- hincrbyfloat key field increment
注意事项
- hash类型下的value只能存储字符串 不存在嵌套现象
- 取数据少用hgetall
小例子 实现购物车
list 类型
简介
- 数据存储 (底层用双向链表实现)
- 适用于有序场景 例如消息队列,展示最新新闻按照时间顺序展示,解决多路消息的汇总合并按照时间顺序输出
基本操作
拓展操作
-
- key 删哪个列表
- count 删几个
- value 删什么内容
注意事项
- 保存的都是string类型
- 具有索引概念,但是通常以队列或栈的操作方式进行数据操作
- 可以对数据进行分页操作,第一页用list加载,后面的再从数据库中获取
set类型
简介
- 可以存储大量数据,在查询方面提供更高效率,list是链表,不便于查询
- 与hash存储结构完全相同,但是仅存储键,不存储值
- 值不允许重复
基本操作
-
扩展操作
-
用于同类信息关联搜索,显示共同关注,进行喜好推荐