Redis 是一个高性能的key-value内存数据库,它的定位是缓存,提高对数据的读写速度,减轻对数据库的存储与访问压力
redis解决了两个问题
- 性能
通常数据库的读操作,一般都要几十毫秒,而redis的读操作一般仅需不到1毫秒。通常只要把数据库的数据缓存进redis,就能得到几十倍甚至上百倍的性能提升。
- 并发
在高并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常,甚至卡死在数据库中。为了解决高并发卡死的问题,一般的做法是采用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问数据库。
分布式session有什么问题
解决:例如通过将登陆成功后的用户信息存入redis中
String类型
命令
可选参数说明
NX:表示key不存在才设置,如果存在则返回NULL
XX:表示key存在时才设置,如果不存在则返回NULL
EX seconds:设置过期时间,过期时间精确为秒
PX millsecond:设置过期时间,过期时间精确为毫秒
SET:命令
127.0.0.1:6379> set user1 '{
"id":1,"username":"agan01","password":"123456","sex":1}'
OK
127.0.0.1:6379> get user1
"{\"id\":1,\"username\":\"agan01\",\"password\":\"123456\",\"sex\":1}"
NX:表示key不存在才设置,如果存在则返回NULL
127.0.0.1:6379> set user1 '{
"id":1,"username":"agan01","password":"123456","sex":1}' NX
(nil)
因为user1已经存在,所以设置失败,返回nil
XX:表示key存在时才设置,如果不存在则返回NULL
127.0.0.1:6379> set user1 '{
"id":2,"username":"agan01","password":"123456","sex":1}' XX
OK
127.0.0.1:6379> get user1
"{\"id\":2,\"username\":\"agan01\",\"password\":\"123456\",\"sex\":1}"
EX seconds:设置过期时间,过期时间精确为秒
采用ttl查看剩余过期时间
127.0.0.1:6379> set user1 '{
"id":2,"username":"agan01","password":"123456","sex":1}' EX 600
OK
PX millsecond:设置过期时间,过期时间精确为毫秒
127.0.0.1:6379> set user1 '{
"id":2,"username":"agan01","password":"123456","sex":1}' PX 600000
OK
##MSET ##MGET
作用:批量设值 作用:批量取值
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
作用:字符串拼接
##语法:APPEND key str
127.0.0.1:6379> set user 123
OK
127.0.0.1:6379> append user abc
(integer) 6
127.0.0.1:6379> get user
"123abc"
##语法:SUBSTR key str
作用:字符串截取
127.0.0.1:6379> get user
"123abc"
127.0.0.1:6379> substr user 0 3
"123a"
##INCR
作用:计数器
127.0.0.1:6379> incr product01
(integer) 1
127.0.0.1:6379> get product01
"1"
127.0.0.1:6379> incr product01
(integer) 2
127.0.0.1:6379> incr product01
(integer) 3
127.0.0.1:6379> get product01
"3"
##DECR
语法: DECR key
127.0.0.1:6379> get product01
"3"
127.0.0.1:6379> decr product01
(integer) 2
127.0.0.1:6379> decr product01
(integer) 1
127.0.0.1:6379> get product01
"1"
##INCRBY
作用:加法
127.0.0.1:6379> set product01 100
OK
127.0.0.1:6379> get product01
"100"
127.0.0.1:6379> incrby product01 20
(integer) 120
127.0.0.1:6379> get product01
"120"
作用:减法
语法:DECRBY key data
127.0.0.1:6379> get product01
"120"
127.0.0.1:6379> decrby product01 30
(integer) 90
127.0.0.1:6379> get product01
"90"
原有的key上加上浮点数
127.0.0.1:6379> set money 10.5
OK
127.0.0.1:6379> incrbyfloat money 2.2