Redis实战演练

Redis 是一个高性能的key-value内存数据库,它的定位是缓存,提高对数据的读写速度,减轻对数据库的存储与访问压力

redis解决了两个问题

  • 性能

通常数据库的读操作,一般都要几十毫秒,而redis的读操作一般仅需不到1毫秒。通常只要把数据库的数据缓存进redis,就能得到几十倍甚至上百倍的性能提升。

  • 并发

在高并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常,甚至卡死在数据库中。为了解决高并发卡死的问题,一般的做法是采用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问数据库。

分布式session有什么问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z02QT4Yj-1644657992432)(redis.assets/image-20220120154906863.png)]

解决:例如通过将登陆成功后的用户信息存入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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值