高性能redis(一):什么是 redis

1,937 阅读3分钟

什么是 redis

Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询和流的地理空间索引。Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性并使用Redis Cluster自动分区。

简单说:redis 是由 C 语言写成的,开源的 key-value 数据库。

Redis特性

  • 读写性能优异
  • 持久化
  • 数据类型丰富
  • 单线程
  • 数据自动过期
  • 发布订阅
  • 分布式

使用Redis有哪些好处?

  1. 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)

  2. 支持丰富数据类型,支持string,list,set,sorted set,hash

  3. 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行

  4. 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

redis 可以用来干什么

1. 缓存

缓存是redis最常见的应用场景,主要是因为redis读写性能优异,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。其次 redis 支持保存多种数据结构,此外单个value的最大限制是1GB,而memcached只能保存1MB的数据。

memcached 也是作缓存的数据库,点击查看差异。

2. 分布式锁

因为redis单线程的这个特性,其中有个很重要的应用场景就是分布式锁。对于高并发的系统,都是用多服务器部署,其中程序进行逻辑处理时就可以用到分布式锁来限制程序的并发。

3. 自动过期

redis针对数据都可以设置过期时间,可以自动的去清理过期的数据。常见的应用场景有:短信验证码,活动开始和截止日期等具有时间性的商品展示等

4. 计数器和排行榜

redis在内存中对数字进行递增或递减的操作支持很好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些排行操作的时的非常简单。

5. 秒杀的缓冲层

秒杀是现在互联网系统中常见的营销模式,但是通常由于并发太高导致、程序阻塞等原因给开发带来很大困难。可以利用redis单线程的特性来控制并发,可将redis作为缓存平台,由于redis的读写能力很强,所以不易产生程序阻塞现象。

6. 处理签到和其他状态(大数据处理)

当用户量庞大时,如何去在极短的时间里去统计用户的状态,签到情况等,如QQ打卡、 查看好友状态等。redis中的位图可以很好的解决这个问题。

7. 发布/订阅

可以使用redis的发布订阅去实现的社交聊天系统。