最新版本Redis:Redis 7.0 安装使用,编译安装Redis,Redis使用场景。
本章主要目标:
1.Redis介绍
2.下载Redis,编译安装Redis
3.启动Redis使用
4.Redis常用数据类型
5.使用场景介绍
下面开始本章内容的学习
1.Redis介绍
Redis 是一个开源的(BSD许可),使用内存来存储数据结构的系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
2.下载Redis,编译安装Redis
Redis源码地址:https://github.com/redis/redis
##下载最新源码
wget https://github.com/redis/redis/archive/refs/tags/7.0.2.tar.gz
##解压Redis 源码
tar zxvf 7.0.2.tar.gz
##进入目录进行编译
cd redis-7.0.2 && make
3.启动Redis,简单使用
修改配置文件 redis.conf
# no 表示关闭保护模式
protected-mode no
# yes表示以守护进程的方式运行(会占用一个终端)
daemonize yes
启动Redis命令:./src/redis-server
后台启动:nohup ./src/redis-server &
查看redis进程:ps -ef |grep redis
使用redisc-cli 链接,命令:./src/redis-cli
Redis使用
set name zhangsan
get name
4.Redis常用数据类型
Redis主要有5种数据类型,包括String,List,Set,Zset,Hash,满足大部分的使用要求
数据类型 | 可以存储的值 | 操作 | 应用场景 |
---|---|---|---|
STRING | 字符串、整数或者浮点数 | 对整个字符串或者字符串的其中一部分执行操作。对整数和浮点数执行自增或者自减操作 | 做简单的键值对缓存 |
LIST | 列表 | 从两端压入或者弹出元素。对单个或者多个元素进行修剪,只保留一个范围内的元素 | 存储一些列表型的数据结构,类似粉丝列表、文章的评论列表之类的数据 |
SET | 无序集合 | 添加、获取、移除单个元素。检查一个元素是否存在于集合中,计算交集、并集、差集,从集合里面随机获取元素 | 交集、并集、差集的操作,比如交集,可以把两个人的粉丝列表整一个交集 |
HASH | 包含键值对的无序散列表 | 添加、获取、移除单个键值对。获取所有键值对,检查某个键是否存在 | 结构化的数据,比如一个用户对象数据。 |
ZSET | 有序集合 | 添加、获取、删除元素。根据分值范围或者成员来获取元素,计算一个键的排名 | 去重但可以排序,如获取排名前几的数据 |
5.使用场景介绍
1.缓存热点数据
缓存机制几乎在所有的大型网站都有使用,合理地使用缓存不仅可以加快数据的访问速度,而且能够有效地降低后端数据源的压力。Redis提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。可以这么说,一个合理的缓存设计能够为一个网站的稳定保驾护航。
热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。
对于热点数据,缓存以后可能读取数十万次,因此,对于热点数据,缓存的价值非常大。例如,分类栏目更新频率不高,但是绝大多数的页面都需要访问这个数据,因此读取频率相当高,可以考虑基于 Redis 实现缓存。
数据共享分布,因为Redis是分布式的独立服务,可以在多个应用之间共享。例如:分布式Session
2.排行榜系统
排行榜系统几乎存在于所有的网站,例如按照热度排名的排行榜,按照发布时间的排行榜,按照各种复杂维度计算出的排行榜,Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。
3.计数器应用
计数器在网站中的作用至关重要,例如视频网站有播放数、电商网站有浏览数,为了保证数据的实时性,每一次播放和浏览都要做加1的操作,如果并发量很大对于传统关系型数据的性能是一种挑战。Redis天然支持计数功能而且计数的性能也非常好,可以说是计数器系统的重要选择。
4.社交网络
用户关系、关注和粉丝、赞/踩、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,由于社交网站访问量通常比较大,而且传统的关系型数据不太适合保存这种类型的数据,Redis提供的数据结构可以相对比较容易地实现这些功能。
5.消息队列
Redis 能作为一个很好的消息队列来使用,依赖 List 类型利用 LPUSH 命令将数据添加到链表头部,通过 BRPOP 命令将元素从链表尾部取出。消息队列系统可以说是一个大型项目的必备基础组件,因为其具有异步处理、业务解耦、业务削峰的特性。
Redis提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功能基本可以满足。
6.分布式锁
String 类型setnx 方法,只有不存在时才能添加成功,返回true
可以使用Redssion 框架,使用lua脚本,底层使用的hash数据类型进行存储。