使用Lua脚本的好处:
- 减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延
- 原子操作。redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。因此在编写脚本的过程中无需担心会出现竞态条件,无需使用事务。
- 复用。客户端发送的脚步会永久存在redis中,这样,其他客户端可以复用这一脚本而不需要使用代码完成相同的逻辑。
调用Lua脚本的语法:
使用Lua脚本的好处:
调用Lua脚本的语法:
之前对于并发和异步讲得比较多,今天讲一下更常见的缓存应用架构。
我们先看一个简单的架构
参考官方github文档:
# Server
redis_version:3.2.3 //Redis的版本号
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:a63c5ae1f392752f
redis_mode:standalone
os:Linux 2.6.32-504.el6.x86_64 x86_64 //Linux版本
Redis 使用对象来表示数据库中的键和值, 每次当我们在 Redis 的数据库中新创建一个键值对时, 我们至少会创建两个对象, 一个对象用作键值对的键(键对象), 另一个对象用作键值对的值(值对象)。
SDS是simple dynamic string的缩写,简称简单动态字符串。
一个大型、稳健、成熟的分布式系统的背后,往往会涉及众多的支撑系统,我们将这些支撑系统称为分布式系统的基础设施,包括:分布式协作及配置管理系统zookeeper,分布式缓存系统,持久化存储,分布式消息系统,搜索引擎,CDN系统,负载均衡系统,运维自动化系统,实时计算习系统,离线计算系统,分布式文件系统,日志搜集系统,监控系统,数据仓库等.
互联网早在几年前就已进入Web 2.0时代,对后台支撑能力的要求,提高了几十倍甚至几百倍。在这个演化过程中,缓存系统扮演了举足轻重的角色。运维进化到今天,已经不是重复造轮子的时代。所以,我们在架构优化和自动化运维中,可以尽可能地选用优秀的开源产品,而不是自己完全从头再来(各种技术geek除外)。
1、折腾codis集群已经快两个月了,感谢一直以来codis的作者刘奇和黄东旭的耐心支持,在这里给你们点个赞,现在我司已经有一个业务跑在了codis集群上,目前只是切了整个业务的10%的量,预计下周会全量切到codis上,这个时候大家肯定特别想知道codis稳定吗?有没有什么bug啊,你想知道的也是我想知道的,搞起吧,用了才知道,反正目前我们这没发现啥问题,一些小的问题已经及时联系作者改掉了,好吧,不扯淡了,写这篇文章的目的是帮助想了解codis的初学者快速部署(官方的部署文档对应运维知识弱一点的童鞋看来还是有点费力)还有就是给自己做一个备录以便后期集群的部署。
# Example sentinel.conf
# port <sentinel-port>
# The port that this sentinel instance will run on
port 26379
#指定sentinel使用的端口,不能与redis-server运行实例的端口冲突