Redis
参考文档 : http://redisdoc.com/
[toc]
一 linux 的环境软件安装
|
|
尝试操作
解决中文乱码, 启动时加参数
--raw
|
|
redis 安装完毕, 默认有 16 个数据库, 初始默认使用 0 号库, 编号 0,1,2…15
|
|
2. 基础知识
一般电商场景解决方案
适用场景
redis 存储的是 key,value 格式数据
其中的 key 都是字符串, value 有 ==5== 大数据类型
-
字符串类型
-
哈希类型 hash:map
-
列表类型 list: linkedlist格式,支持重复元素
-
集合类型 set : 不允许重复元素且无序
-
有序集合类型 sortedset: 不允许重复元素,且元素有序
2.1. 使用 help 了解命令
|
|
2.2. string 类型
单个操作
|
|
多个操作
|
|
扩展操作
|
|
操作注意事项
应用场景
2.3. hash 类型
- 对一系列数据编组,方便管理,典型应用存储对象信息
- 底层使用 哈希表结构实现数据存储
单个操作
|
|
多个操作
|
|
扩展操作
|
|
注意事项
应用场景
3 list 类型
redis 列表是简单的字符串列表, 按照插入顺序排序, 可以添加元素到头部或者尾部 (即 队列)
该类型底层实现是双向链表
|
|
扩展操作
|
|
应用场景
4 set 类型
|
|
适合应用于随机推荐类信息检索,热点歌单推荐/热点新闻推荐/热卖商品/大 V 推荐/
注意事项
- set 类型不允许数据重复,如果添加的数据在 set 中已存在,将只保留一份
- set 虽然与 hash 的存储结构相同,但是无法启用 hash 中存储值的空间
应用场景
- 依赖 set 集合数据不重复的特征
- 根据用户 ID 获取用户所有角色
- 根据用户所有角色获取用户所有操作权限
- 根据用户所有角色获取用户的所有数据
5 有序集合 ( sorted_set )
有序/不允许重复/String类型
每个元素都关联一个 double 类型的数, 根据此数排序
|
|
注意:
- min 与 max 用于限定搜索查询的条件
- start 与 stop 用于限定查询范围,作用于索引,表示开始和结束索引
- offset 与 count 用于限定查询范围,作用于查询结果,表示开始位置和数据总量
通用命令
|
|
持久化
redis 是一个内存数据库, 当 redis 服务器重启, 或者电脑重启, 数据会丢失, 可以将内存中的数据持久化保存到硬盘上
redis 持久化机制( 分别以 reb 和 aof 结尾 ):
- RDB 默认方式, 不需要进行配置
- 在一定间隔时间中,检测 key 的变化情况, 然后持久化数据( 见图1 图2)
- AOF 日志记录的方式, 可以记录每一条命令的操作, 可以每一次命令操作好持久化数据 ( 图3 图4)
- 即每一次操作都写入文件
Go 使用 Redis
导入第三方包 : "github.com/garyburd/redigo/redis"
|
|
一 连接池
二 字符串 set/get
incr 计数器
用于防止表单重复提交等问题
类似效果的有 singleFight
,其间隔时间为执行完当前函数
计数器可以通过设置过期时间,来延长提交间隔,一般 1 / 2 即可
|
|
封装计数器
此封装并未实现幂等,
|
|
测试
|
|