本文目录一览:
- 1、数据多的时候为什么要使用redis而不用mysql?
- 2、Jedis干什么用的
- 3、linux的redis
- 4、Springboot使用redis的setnx和getset实现并发锁、分布式锁
从类型上来说,mysql是关系型数据库 , redis是缓存数据库 。mysql用于持久化的存储数据到硬盘,功能强大 , 但是速度较慢 。redis用于存储使用较为频繁的数据到缓存中,读取速度快 。
类型不同 MySQL是关系型数据库;而Redis是非关系型数据库 。作用不同 mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢 。redis用于存储使用较为频繁的数据到缓存中 , 读取速度快 。
redis可以作为存储的扩展部分 , 但是不能直接替换掉mysql 。redis对事务的支持还是比较简单的 。但是redis的性能和扩展性比较好,使用起来比较方便 。不会的 。只能是一种互补 。
不会的 。只能是一种互补 。redis把数据存在内存里读的速度快,但内存空间小 。mysql是存放在硬盘上的 。数据大 。但是读硬盘肯定比读内存慢 。
那么为什么要使用类似redis这样的Nosql数据库呢?1) 当数据量的总大小一个机器放不下时;2) 数据索引一个机器的内存放不下时;3) 访问量(读写混合)一个实例放不下时 。
Jedis干什么用的redis是key-value存储系统 。key-value分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询 。
jedis就是基于java语言的redis客户端,集成了redis的命令操作 , 提供了连接池管理 。redis-cli是redis官方提供的客户端,可以看作一个shell程序,它可以发送命令对redis进行操作 。
也就是说jedis是:request response , request response,...;pipeline则是:request request... response response的方式 。这样无需每次请求都等待server端的响应 。
Jedis是Redis的Java客户端实现,封装了对Redis的通信和命令处理等 。Jedis提供了资源池 , 可以很方便地实现对Redis的API调用 。
利用Jedis构造器,仅限用于测试,在实际项目中肯定是用JedisPool 。
jediscluster 在程序中需要调用close或quit 打个jstack看,最底下醒目的deadlock 。一看,jedis干的 。
linux的redis1、首先为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中 。
2、使用redis-cli连接上redis其中一台:redis-cli-c-hxxx-p7001,输入clusterinfo查看当前集群的状态 。可以使用trib的check检测的集群状态:redis-trib.rbcheckxxx:7001,Notall16384slotsarecoveredbynodes 。
3、redis可以作为存储的扩展部分,但是不能直接替换掉mysql 。redis对事务的支持还是比较简单的 。但是redis的性能和扩展性比较好,使用起来比较方便 。不会的 。只能是一种互补 。
4、在 Linux 系统中 , 可以通过在 redis-cli 命令后指定 -h 参数来指定 Redis 服务器的主机名或 IP 地址 。
Springboot使用redis的setnx和getset实现并发锁、分布式锁使用redis实现并发锁,主要是靠两个redis的命令:setnx和getset 。那我们的设计思路就是:上面的代码使用了一个RedisService的类,里面主要是简单封装了一下redis的操作,你可以替换为自己的service 。
这里同时启动5个线程并发往redis中存储 lock 这个key(key可以自定义 , 但需要一致),同时设置10秒的过期时间 。
在8版本之后,redis为了解决这个问题,提供了官方版的解法 , 就是命令:set key value nx expireTimeNum ex , 将上述两个命令合并成了一个命令 。
【程序中使用函数的部分称为程序中使用redis】C3发送SETNX lock.foo 想要获得锁,由于C0还持有锁,所以Redis返回给C3一个0 C3发送GET lock.foo 以检查锁是否超时了,如果没超时,则等待或重试 。
释放锁时 , 删除相应的记录 。基于Redis的分布式锁使用Redis的SETNX命令(Set if Not eXists)来实现分布式锁 。SETNX命令在键不存在时设置值,并返回1;如果键已存在,不执行任何操作,并返回0 。
推荐阅读
- 如何在云服务器上设置网址地址? 云服务器怎么设置网址地址
- redis分布式数据库 redis搭建分布式文件系统
- Php安装小程序 php安装redis
- jdbc连接流程 通过jdbc连接redis
- redis缓存管理器 缓存工具redis
- redis集群如何保持数据一致性 redis集群如何保持数据一致
- redis数据失效时间 redis怎么保证数据时效性
- redis集群ip地址 redis集群支持ipv6吗