Redis的使用(一)概述

发布于:2024-07-05 ⋅ 阅读:(12) ⋅ 点赞:(0)

1.绪论

redis是一款用c++编写的kv数据库,它具有丰富的数据类型,并且执行原子操作,自带数持久化,并且实现了集群部署等功能,我们来看看它有哪些特点:

1.提供了丰富的数据结构,比如string,list,hash,set,zset这五大基础的数据结构;除此之外,还提供了bigmap(位图)、GEO(地理位置)、HyperLog (超日志)等扩展结构;

2.为了保证可用性,提供了AOF和RDB这两种持久化的日志方式;

3.为了保证集群高可用,提供了主从同步、哨兵、集群等部署模式;

4.为了实现多条命令的原子性,redis提供了pipeline和支持lua脚本的扩展功能;

5.为了实现生产者消费者模式,redis提供了发布/订阅模式和stream类型;

6.为了防止缓存中的数据一直递增,超过内存上限,redis根据lru机制筛选出不被经常访问的数据淘汰掉;

7.redis高性能的原因也离不开它优秀的网络IO内核。

上面其实是redis的一些常见的特性,也是我们学习redis的内容。

2.redis的作用

2.1 缓存

redis可以用来做缓存,将一些热点数据存储到redis中,可以降低数据库的请求数量,增大并发,降低数据库的压力。

2.2 session分离

在用户登录的场景中,需要获取到用户信息,可以将用户信息存储到redis中,下次访问的时候直接从redis中获取。

2.3 分布式锁

尽管redis不是强一致性的框架,但是在业务场景中还是经常将redis拿来实现分布式锁,每次请求的时候,可以将单据id放入到redis中;如果下次请求到来的时候会根据单据id查询redis,如果发现该数据已经在redis中存在,便知道有其他线程持有锁,请求失败。

2.4 消息队列

redis提供了阻塞队列,可以通过阻塞队列来实现消息队列,但是并不常用,推荐使用常用的消息队列框架,比如rocketmq、kafka等。

2.5 数据统计

比如热点数据的统计,因为redis针对数字类型提供了自增的操作,可以用来实现多维度的计数工能。

3. redis对比Memcached 

redis Memcached 
支持的数据类型 redis支持复杂的数据类型,比如hash,set,list等 Memcached只支持字符串
网络IO redis的io模式是单线程 多线程读写
是否支持持久化

redis支持RDB和AOF两种持久化方式

不支持
是否支持集群 redis支持主从,哨兵,集群等高可用部署 通过key的hash值路由到不同的单节点机器上,节点之间不相互通信
是否支持原子命令 redis支持lua脚本,事务等原子操作 Memcached 只支持简单的key的读写

综上,Memcached 更适合于只支持简单的数据插入并且不担心数据丢失的场景,redis支持更加复杂的写入和查询操作场景。

4.总结

本文主要介绍了redis的一些特点和作用,并且和Memcached进行了对比,后面我们将来探讨redis的具体使用以及每个高级特性是如何实现的。


网站公告

今日签到

点亮在社区的每一天
去签到