redis笔记

目录

首先,启动本地的redis服务。

使用RedisDesktopManager来操作redis

使用java语言操作redis

从大量的数据里面查找符合条件的key

用redis实现分布式锁


项目中用到了redis,但是一致不了解其操作方式,最近就看了看,做一下笔记。

https://blog.csdn.net/qq_20521021/article/details/90729834


首先,启动本地的redis服务。

我用的是windows版本的,直接运行redis-server.exe就可以启动服务了,终端显示为这个大块块,就是运行成功了,不要关闭这个。

使用RedisDesktopManager来操作redis

(我就想找一个能操作的软件,没有找到别的,这个用着也还可以,还能可视化,我就用着了)

(select N 是切换到第n个实例) 


在这个终端就可以来锻炼操作redis的语句

redis常用的数据类型为:String,Hash,List,Set,SortedSet

可以针对每一种来进行新增和查询等操作

我参考了这两篇文章:

常用命令1Hash类型的命令


使用java语言操作redis

Redis实战之Redis + Jedis 我参考了这篇文章。

导入了jar包之后,配置好redis路径,就直接使用就可以了,Jedis对象的方法都和redis的命令比较相似,所以使用起来还是比较方便。

这个里面是我放的测试数据,在可视化界面可以看到数据已经添加成功了,也可以用操作命令在终断查看数量:dbsize

(这个数量我之前就加过一万,所以和上面代码创建的数量不一致)


从大量的数据里面查找符合条件的key

在redis里加了大量的测试数据之后,当使用: keys pattern* 命令时   

就会非常慢,因为数量多,一次性返回所有,对内存的消耗就会比较大。

这个时候就可以使用SCAN cursor [MATCH pattern] [COUNT count]基于游标迭代器的方式,分批次地查询,但是这个count不是精确值,而且查完之后的数据有可能重复,这时可以存到hashset里去重。

查完之后的1)是刚才游标的地址,就再把这个地址值再接着差就好。


用redis实现分布式锁

1.SETNX来操作(这个方法是不符合原子性的)

利用的是:setnx 一个值,如果存在,就返回'0',不存在就返回'1'并赋值 的这个特点

这个时候就可以判断状态为1的时候,就把这个locknx设置一个过期时间:expire locknx time,然后执行独占资源的逻辑

当状态为0的时候就说明没有释放,就一直等待。这时候就会存在在setnx(key,"1");结束后服务挂了,那就没有设置过期时间,服务就一直获取不盗status==1了,就会存在问题。

2.使用如图所示的方式,就可以满足原子性了


大量key同时过期,销毁时会占用大量资源,会造成卡顿,这个时候就可以在设置销毁时间的时候增加一个随机数,来减少这类问题


今天学了之后感觉对应redis有了一定的熟悉,比之前只会启动redis强了一点点,这篇也仅仅是我的自己总结,因为没有深入原理,有哪些不足的地方也希望能告诉我,我也会积极学习。  写了这个文章感觉印象加深了不少,还是挺不错的,嘿嘿。

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值