Redis学习-并发访问,mysql通信

并发访问

Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。Redis本身没有锁的概念,Redis对于多个客户端连接并不存在竞争,但是在Jedis客户端对Redis进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是由于客户端连接混乱造成。对此有2种解决方法:

1.客户端角度,为保证每个客户端间正常有序与Redis进行通信,对连接进行池化,同时对客户端读写Redis操作采用内部锁synchronized

2.服务器角度,利用setnx实现锁。如某客户端要获得一个名字list的锁,客户端使用下面的命令进行获取:

Setnx lock.list  current time + lock timeout

  •  如返回1,则该客户端获得锁,把lock. list的键值设置为时间值表示该键已被锁定,该客户端最后可以通过DEL lock.list来释放该锁。
  •  如返回0,表明该锁已被其他客户端取得,等对方完成或等待锁超时。

3.线程池

 

mysql通信

数据一致性主要针对系统中Redis与mysql中的数据而言。为保证二者数据一致可采用以下策略:对于重要的数据,系统可以采取先写数据库再写缓存的方式来保证,而对于一般而响应速度要求很高的数据可以采取先写缓存然后通过消息队列再写入数据库的方式,同时做好错误日志记录以及能根据日志恢复数据。(jms/Redis消息队列)

存在问题:

(1)当用户进行添加操作, Redis与Mysql如何同步?

首先服务器启动,Redis读取Mysql表最新自增键Id值,然后Redis 读取id并封装缓存,同时保持mysql最后由队列完成mysql更新

 (2)消息队列处理?

    定位Redis操作:

定位dao:定义类、方法对应规则,结合存储Redis key定位方法,更新mysql

    分类处理:按照类、方法。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值