Redis高并发
背景
Redis是不会存在并发问题的,因为他是单进程的,再多的命令都是一个接一个地执行的。
场景
GET & SET
利用Jedis等客户端对Redis进行并发访问
远程访问Redis的时候,因为网络等原因造成高并发访问、延迟返回
我们使用的时候,可能会出现并发问题,比如获得和设定这一对。
Redis的为什么 有高并发问题?Redis的的出身决定。
Redis是一种单线程机制的nosql数据库,基于key-value,数据可持久化落盘。
由于单线程所以Redis本身并没有锁的概念,多个客户端连接并不存在竞争关系,
但是利用Jedis等客户端对Redis进行并发访问时会出现问题。
原因
发生【连接超时】、【数据转换错误】、【阻塞】、【客户端关闭连接】等问题,
这些问题均是由于【客户端连接混乱】造成。
单线程的天性决定,高并发对同一个键的操作会排队处理,
如果并发量很大,可能造成后来的请求超时。
在远程访问Redis的时候,因为网络等原因造成高并发访问延迟返回的问题。
解决办法
- 客户端角度,将连接进行池化,同时对读写Redis操作采用内部锁 sync hronized;
- 服务器角度,利用setnx变向实现锁机制;
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Michael's Blog!
评论




