千家信息网

Redis理论篇-为什么使用Redis?

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,1. Redis简介Redis 是一个Key-Value 存储系统。和Memcached 类似,它支持存储的value 类型相对更多, 包括string(字符串)、list(链表)、set(集合)和z
千家信息网最后更新 2024年11月23日Redis理论篇-为什么使用Redis?

1. Redis简介

Redis 是一个Key-Value 存储系统。和Memcached 类似,它支持存储的value 类型相对更多, 包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis 支持各种不同方式的排序。与memcached 一样,为了保证效率,数据都是缓存在内存中。区别的是Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

1.1 Key-Value 存储系统简介

Key-Value Store 是当下比较流行的话题,尤其在构建诸如搜索引擎、IM、P2P、游戏服务器、 SNS 等大型互联网应用以及提供云计算服务的时候,怎样保证系统在海量数据环境下的高性能、高可靠性、高扩展性、高可用性、低成本成为所有系统架构们挖苦心思考虑的重点,而怎样解决数据库服务器的性能瓶颈是最大的挑战。按照分布式领域的CAP 理论(Consistency、 Availability 、Tolerance to network Partitions 这三部分在任何系统架构实现时只可能同时满足其中二点,没法三者兼顾)来衡量,传统的关系数据库的ACID 只满足了Consistency、Availability ,因此在Partition tolerance 上就很难做得好。另外传统的关系数据库处理海量数据、分布式架构时候在 Performance Scalability 、Availability 等方面也存在很大的局限性.而Key-Value Store 更加注重对海量数据存取的性能、分布式、扩展性支持上,并不需要传统关系数据库的一些特征,例如:Schema、事务、完整 SQL 查询支持等等,因此在分布式环境下的性能相对于传统的关系数据库有较大的提升。

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的API 。从2010 年3 月15 日起,Redis 的开发工作由VMware主持.

1.2 Redis应用场景

1.2.1 取最新N 个数据的操作

1.2.2 排行榜应用,取TOP N 操作

这个需求与上面需求的不同之处在于,前面操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序,这时候就需要我们的sorted set 出马了,将你要排序的值设置成sorted set 的score,将具体的数据设置成相应的value ,每次只需要执行一条ZADD 命令即可。

1.2.3、需要精准设定过期时间的应用

比如你可以把上面说到的sorted set 的score 值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,定时清除过期数据了,不仅是清除Redis 中的过期数据,你完全可以把 Redis 里这个过期时间当成是对数据库中数据的索引,用 Redis 来找出哪些数据需要过期删除,然后再精准地从数据库中删除相应的记录.

1.3 Redis数据类型

作为Key-value 型数据库,Redis 也提供了键(Key)和键值(Value )的映射关系。但是,除了常规的数值或字符串,Redis 的键值还可以是以下形式之一:

Lists (列表)

Sets (集合)

Sorted sets (有序集合)

Hashes (哈希表)

键值的数据类型决定了该键值支持的操作。Redis支持诸如列表、集合或有序集合的交集、并集、查集等高级原子操作;同时,如果键值的类型是普通数字,Redis 则提供自增等原子操作。



以上内容出自红丸。

0