Redis 应用小结


Redis应用总结

首先弄清楚Redis是什么?

在实际的应用开发中,能帮我们解决什么问题?

应用中要注意什么样的问题,避免乱用。

Redis其实是一个内存数据库-noSql数据库,数据储存就是key-value。

你可以简单的把它看成就是一个map结构。

Redis是单线程,所以单个命令请求操作是线程安全的,如果想一次执行多个命令并且要求执行过程中不被打断,则使用事物(用multi来开启,exec来提交)。

支持的数据结构比memcached多,有 string\list\hash\set\zset 五种结构。

在应用开发中,我们通常会用Redis来做分布式缓存、流量限制、并发访问控制和分布式锁等。

用作分布式缓存的话,一般要考虑的因素是什么数据适合缓存,缓存数据要考虑命中率,如果命中率低 ,那边缓存中作用就适得其反。

缓存数据要考虑内存的优化,这样能缓存更多的数据(redis提供的内部编码能优化存储,但其他条件是遵循内部编码的原则)。

既然是分布式缓存,那么必然要考虑高可用性。

在实际的开发中,redis高可用方案有很多,不过redis自身也提供集群解决方案,我更倾向于redis自身的高可用方案,因为其去中心化,缓存数据分片(可以根据key缓存到不同实例的不同slot)。

但这里面有些地方需要注意,因为数据被分片,所以使用多key操作或者集合操作命令的时候,不同slot下面的数据是不能操作的,必须保证在多key或者集合运算的数据都在同一个slot下面。

那么如何把这些数据放在同一个slot下面?

解决方案就是使用hash tag。

我们使用redis集群无非是提高系统的高可用、负载均衡。

所以在缓存数据的时候结合业务自身的特点,尽量保证数据均匀发布在所有的slot上面。

在使用redis的时候,为了建设多次交互,我们尽量使用pipeline(这操作没有原子特性),一次提交多个命令。

当然如果使用了redis集群,那得注意你操作的数据是否都在同一个slot里面(说白了你是否使用了hash tag)。

有时候我们也会借助lua脚本来协助我们操作redis,为什么要使用lua脚本,因为该脚本能在服务端执行,并保证操作的原子性,但脚本中不适合复杂的业务,业务业务复杂会占用服务器资源时间过长,并发量大的情况下,很容易引起雪崩。

相关阅读 >>

Redis中sorted-sets类型的命令详细介绍

实现从Redis中订阅消息转发到 websocket 客户端

Redis异常原因及解决方案

使用Redis完成微信摇一摇功能

Redis设置密码的方法详解

Redis集群是什么

Redis集群怎么进行故障检测?

Redis学习之:介绍Redis事务

Redis多数据库的使用

Redis的数据存储在哪里

更多相关阅读请进入《Redis》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...