Redis的随手(2)

Redis的数据类型:

Redis的经典数据类型有5种:string  /hash  /list  /set  /z-set。

  • 在java语言中的简单数据类型,在Redis中对应的都是string。

另外,还包括:bitmap  /hyperloglog  /GEO  /流(后续版本推出)

Redis中的list类型:

在Redis中,list类型的数据是一个先进后出、后进先出的栈结构。

使用Redis时的数据一致性问题:

1.在开发实践中,数据最终肯定是保存在关系型数据库中,(例如MySQL等),同时,为了提高查询效率,保护关系型数据库,通常会将某些数据从关系型数据库中读出来,并写入到Redis中,后续,将优先从Redis中读取数据。

2.由于关系型数据库和Redis都存储了数据,如果某个数据需要修改,最终修改的肯定是关系型数据库中的数据。但是,如果Redis中的数据没有及时更新,却仍从Redis中读取数据,则读取到的数据就是“不准确的”!

3.当同一个数据在多个不同的位置存储了多份,就可能出现以上问题,通常称之为“数据一致性”的问题,即2个或多个不同的存储位置,本应该“相同”的数据其实“并不相同”。

4.关于数据一致性问题:

(1)并不一定有必要及时更新数据,例如:MySQL中的数据发生了变化,但是Redis中却不更新,此时,数据并不一致,但是,对于软件的使用可能没有严重影响。

  • 例如:热门视频的播放次数、热门资讯的浏览次数;
  • 例如:购买火车票,列表页面中显示的各车次的余票数量;

(2)某些数据的更新频率可能非常低,这类数据基本上没有数据一致性问题。

  • 例如:全国省市区数据;

(3)不是所有数据都适合在Redis中也存一份,对于访问频率非常低的数据,或数据量也别打的数据,可以不使用Redis。

  • 例如:用户3年前的历史订单;

5.Redis解决数据一致性问题的做法:

  • 即使更新:当关系型数据库的数据发生变化,马上更新Redis中的数据,保证数据的实时一致性;
  • 周期性更新:当关系型数据库的数据发生变化,并不马上更新,每间隔一段时间或者到了某个指定的时间时,执行1次同步数据的操作,保证数据的最终一致性;
  • 手动更新:当关系型数据库的数据发生变化,并不马上更新,有运营维护人员执行更新操作,进行更新数据,保证数据的最终一致性;
  • 无论哪种更新,保证的都是数据的最终一致性;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值