Redis做为缓存使用,涉及的业务数据譬如:
除了以上经典业务场景,还有三个附加功能:
对应于以上业务场景,Redis给出物种常用数据类型

所有的数据都是采用 key : value 的形式存储,数据类型是指 value 部分的类型,key 部分永远都是字符串!!
一个存储空间保存一个数据,如果字符串是一个整数的形式,则它也可以当作数字一样被操作。

string类型数据的基本操作指令添加/修改数据
set key value
获取数据
get key
删除数据
del key
添加/修改多个数据 (m即Multiple)
mset key1 value1 key2 value2 key3 value3
获取多个数据
mget key1 key2 key3 key4
获取数据字符串长度
strlen key
追加信息到原始信息后面(存在则追加,不存在则新建)
append key value
实例:
127.0.0.1:6379> set name 9527
OK
(0.88s)
127.0.0.1:6379> get name
"9527"
127.0.0.1:6379> del name
(integer) 1 //1代表成功,0代表失败
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> del name
(integer) 0
127.0.0.1:6379> mset a 1 b 2 c 3 d 4
OK
127.0.0.1:6379> mget b c
1) "2"
2) "3"
127.0.0.1:6379> strlen d
(integer) 1
127.0.0.1:6379> append a 314
(integer) 4
127.0.0.1:6379> get a
"1314"
注**
set和mset在不同的数据量下,其效率性能谁高谁低不一定,再譬如单线程下,一下mset大量数据,则容易造成阻塞,孰优孰劣应当以实际生产环境为准。
string类型数据的扩展随着数据的增多,将一个大的表或库,分表分库,是一个常规选择,那如何保证,分表过程中自增主键的不重复性呢?

Oracle 数据库具有 sequence 设定,可以解决该问题,但是 MySQL数据库并不具有类似的机
制。在这个背景下,看Redis的string类型的数据扩展操作:
设置数值数据增加指定范围的值:
增加1,默认
incr key
增加指定整数大小
incrby key increment
增加指定小数大小
incrbyfloat key increment
设置数值数据减少指定范围的值:
减少1
decr key
减少指定数值
decrby key increment
实例:
127.0.0.1:6379> get b
"2"
127.0.0.1:6379> incr b
(integer) 3
127.0.0.1:6379> incrby b 10
(integer) 13
127.0.0.1:6379> decrby b -1
(integer) 14
127.0.0.1:6379> decrby b -1.1
(error) ERR value is not an integer or out of range
注**
127.0.0.1:6379> set str a
OK
127.0.0.1:6379> incr str
(error) ERR value is not an integer or out of range
业务场景举例:
以上,数据均需要控制存在的时间。
设置数据生命周期
秒级:
setex key seconds value
毫秒级:
psetex key milliseconds value
redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作
表名:主键名:主键值:字段名 ,如:
user: uid: 9527: password
news: id :2022813: title
127.0.0.1:6379> set user:id:9527:fans 1000000
OK
127.0.0.1:6379> incr user:id:9527:fans
(integer) 1000001
values中也可以json格式存储信息:
127.0.0.1:6379> set user:id:001 {name:9527,age:22,sex:1}
OK