Redis是一款开源的内存中数据结构存储,可以用作数据库,缓存和消息代理。Redis支持包括string(字符串)、list(列表)、set(集合)、zset(有序集合)及hash(哈希)等数据类型存储,并提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等多种语言的API支持。Redis具有内置的复制,Lua脚本,LRU逐出,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。
Redis采用了C/S框架(Client/Server,客户/服务器模式),为了让Redis的数据更稳定安全所有的数据操作和维护都在服务端执行,而用户只需要通过Redis客户端发送相关的指令即可。Redis为不同的数据结构提供了相应的API,可以方便用户对Redis进行各种操作。Redis是一对多服务器,可以和多个客户端相连。Client和Server可以是在同一设备上,也可以在不同设备上(Client可以通过Server的IP和端口进行访问)。这样设计的好处可以降低服务器的开销,充分利用两端硬件环境的优势。客户端进行用户事物处理,服务端进行数据处理。随着redis对框架的不断改进,实现了本地持久化、主从备份、哨兵模式、群集等高可用架构方案。
在我们的Web项目中数据基本都是用数据库来存储的,只是根据项目不同使用的数据库不同。市面上比较常用的数据库为:MySQL、Microsoft SQL Server、Oracle、DB2、Access、Mongodb、Redis等,每种数据库都有其特点和使用场景。Redis主要用来应对高并发、高读/写等问题,可以缓解服务器压力避免因海量数据访问造成数据库系统瘫痪甚至服务宕机等问题产生(比如淘宝双11狂欢,一天要承载多少的问题量?)。Redis主要应用在缓存系统(用Redis作为缓存存储数据,提升页面响应速度)、计数器(Redis在内存中对数字进行换算操作非常简单快捷)、消息队列系统(直接提供列表存储和列表操作)、排行榜(利用有序集合实现排行榜非常简单)、订阅发布、日志、社交网络、实时系统及Key-Value数据库,也可以用作消息回复、点赞、粉丝、下拉刷新及过期数据删除操作