文章目录
一、命令行模式工具
都是在客户端中执行的命令
功能 | 命令 |
---|---|
添加信息(设置key,value数据,可重复设值相当于修改) | set key value (示例:set name wenmiao) |
查询信息(根据key查value,不存在返回空nil) | get key(示例:get name) |
清除屏幕信息 | clear |
帮助信息查阅 | help 命令名 / help @组名 |
退出指令 | quit / exit / ESC键 |
二、数据存储类型
redis的数据存储格式:redis本身是一个Map,其中所有数据都采用key:value的形式存储
数据类型是指value的类型,key一直是字符串类型
1.数据存储类型介绍
业务数据的特殊性:作为缓存使用
场景 | 示例 |
---|---|
原始业务功能设计 | 秒杀、618活动、双1活动、排队购票 |
运营平台监控到的突发高频访问数据 | 突发时政要闻,被强势关注的内容 |
高频、复杂的统计数据 | 在线人数、投票排行榜 |
单服务器升级集群 | |
session管理 | |
token管理 |
2.string类型数据
2.1 基本命令
类似java的String类型,一个存储空间保存一个数据
功能 | 命令 |
---|---|
添加/修改数据 | set key value |
获取数据 | get key |
删除数据 | del key (删除成功返回 integer 1 ,删除失败返回 integer 0) |
添加/修改多个数据 | mset key1 value1 key2 value2 key3 value3… |
获取多个数据 | mget key1 key2 key3… |
获取数据字符个数(字符串长度) | strlen key |
追加到原始信息后部(原始信息不存在就新建) | append key value |
2.2 单数据操作与多数据操作的选择
多数据操作只需要进行一次发送与接收,消耗时间短
注意:多数据操作指令中,一次发送消耗的时长很大,需要进行切割(如共1000数据,1次发送100个数据)
2.3 数值增减操作
分表:使用多张表存储同类型数据,但对应主键id必须保证统一,不能重复。要解决主键不能重复问题。
Oracle数据库解决主键不能重复问题的方案:使用sequence机制设定解决主键不重复问题。
MySQL数据库解决主键不能重复问题的方案是什么呢?
业务场景1:
redis用于控制数据库表主键id,为数据库表主键提供生成策略,保障数据库表的主键唯一性
适用于所有数据库,且支持数据库集群
redis所有操作都是原子性的,采用单线程处理所有业务,命令一个一个执行,无须考虑并发带来的数据影响
string在redis内部存储默认是一个字符串,当遇到incr,decr时会转成数值型进行计算
注意:按数值进行数据操作,如果原始数据不能转成数值,或超越了redis数值上限范围,会报错:ERR value is not an integer or out of range
java中long型数据最大值是9223372036854775807,Long.MAX_VALUE
string做数值型计算的命令 | 功能 |
---|---|
incr key | key值自增1 |
incrby key increment | key值增加increment,increment可正可负,负数为减 |
incrbyfloat key increment | key值增加increment,加一个小数 |
decr key | key值减少1 |
decrby key increment | key值减少increment,increment可正可负,负数为加 |
2.5 数据时效性设置
业务场景2:
redis用于控制数据的生命周期,通过数据是否失效控制业务行为,适用所有有时效性限定控制的操作
比如:
1.通过微信进行海选投票,每个微信号4小时只能投1票
2.电商热门产品3天后自动取消热门
3.和新闻热点的时效性等等
解决:
设置一个已经投过票的id,news_id:HB314790725,并设置一个时长,时长结束将整个id自动擦去即可
设置数据具有指定的生命周期 | 功能 |
---|---|
setex key seconds value | 设置一个秒级生命周期 |
psetex key milliseconds value | 设置一个毫秒级生命周期 |
2.6 string类型数据操作注意事项
2.6 string类型应用场景综合案例
业务场景3:
redis应用与各种结构型和非结构型高热度数据访问加速
比如:主页高频访问信息显示控制,如新浪微博大V主页显示粉丝数与微博数量
解决:
1.在redis中为大V用户设定用户信息,以用户主键和属性值为key,后台设定定时刷新策略
2.在redis中以json格式存储大V用户信息,定时刷新(也可以使用hash类型)
json格式的存储比较方便,但修改比较麻烦
key设置约定
表名:主键名:主键值:字段名
user:29892999:name
3.hash类型数据
类似java的HashMap类型
新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
需求的存储结构:一个存储空间保存多个键值对数据 5
hash类型:底层使用哈希表结构实现数据存储
4.list类型数据
类似java的LinkedList类型
5.set类型数据
类似java的HashSet类型
6.sorted_set类型数据
类似java的TreeSet类型