十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1.什么是redis
创新互联专注于嘉黎网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供嘉黎营销型网站建设,嘉黎网站制作、嘉黎网页设计、嘉黎网站官网定制、成都微信小程序服务,打造嘉黎网络公司原创品牌,更为您提供嘉黎网站排名全网营销落地服务。
Redis作为一个open source key-value store,与传统的k-v存储开源方案相比,其value类型支持各种常见数据类型(如strings, hashes, lists, sets, sorted-sets, etc.),正因如此,其可被用于多种应用场景。
特别需要说明的是:当需要处理的数据能被内存完全容纳时,Redis才能发挥其优异的性能,即Redis works with an in-memory dataset。
Redis支持数据持久化(persistence),以便Redis服务因各种原因重启后,可以load之前已有数据,从而恢复服务状态。用户可根据实际使用情况选择两种持久化策略:
1) RDB方式:dump内存数据库至磁盘
2) AOF方式:将每个写操作记录到command log文件中,以便server重启时回放log以恢复数据状态(类似于MySQL的binlog)
Redis支持Master-Slave Replication,从库以全镜像方式同步主库数据,以防系统故障。
Redis目前还不支持集群,不过支持集群的版本已在作者开发计划中(cluster目前有alpha版本,尚未发布生产环境可用版本)。
虽无官方的集群实现,但业界主流做法是用Partitioning方式将数据集散列到不同的redis实例上,从而变相实现了对redis集群的支持,redis官网的这里对partitioning的实现思路做了描述并推荐了twitter开源的一个支持redis的proxy - twemproxy(该proxy最初是作为memcached proxy开源的)。
有两个基本概念需要区分:Redis Master-Slave Replication和Redis Cluster,前者在两个库之间实现数据全镜像,后者则是将用户数据散列到不同机器上,每个机器的Redis节点只hold一部分用户数据。
个人感觉,两种方法都可以起到单点故障容错作用,只是实现方式及应用场合不同而已。
Redis还可以被用作Message Queue,支持的指令集见这里
关于Redis的更多基础介绍,可直接查看其官网文档。
2. Redis Architecture
关于redis的架构及实现细节,有很多资料可以参考,这里推荐2篇:
1) Redis作者antirez关于Redis设计哲学的说明:Redis Manifesto
2) The architecture of REDIS
3. Redis Performance and Application
Redis以其高性能闻名(全内存hold数据,典型的"空间换时间"),关于其性能的benchmarks,这里给出2篇资料:
1) Redis官方发布的性能测试工具及测试结果
2) TimYang: MemcacheDB/Tokyo Tyrant/Redis性能对比测试
虽然redis在业界大热,但也非包治百病的万能药。关于Redis的常见应用场合及注意事项,这里推荐2篇资料:
1) Common Web Use Cases Solved In Redis
2) TimYang: Redis几个认识误区
需要说明的问题:
关于性能,即使假定测试机器配置均相同,Redis的启动配置不同也会对Redis性能指标产生影响(比如持久化策略的配置)。因此各种性能测试结果具有参考意义,但不可以生搬硬套。
关于应用,不限于本文给出的资料,大家感兴趣的话,可用"redis use case"或"redis application"等key words进行搜索。
4. Redis Installing
Redis源码无外部依赖,故编译安装非常方便,从官网下载最新稳定版的源码后,解压后make即可。
编译好的bin文件位于在源码的src目录下,均以redis-xxx命名。其中:
可执行的2进制文件共有5个:
a.redis-benchmark # 性能测试工具
b.redis-check-aof # aof文件修复工具
c.redis-check-dump # rdb文件修复工具
d.redis-cli # 命令行交互工具
e.redis-server # redis server
conf文件两个:
a.redis.conf # redis server的配置文件
b.sentinel.conf # redis sentinel配置文件,用于监控
redis server完成编译后,部署启动实例前,需要对redis.conf中的配置项有较为清楚的理解和合理的配置,否则可能会影响redis的性能或造成数据丢失。限于篇幅,redis的配置说明会在下篇笔记中详细描述。