目录
前言
数据库对程序员来说是一项必须掌握的技术,我们常见的数据库有mysql、oracle、DB2等等,这些数据库的数据都是存储在硬盘中,用户访问数据时每次都要从硬盘中取数据,这种模式在访问量少的情况下还可行,但是当用户访问量增加时就会影响用户的应用体验。
我们都知道电脑访问内存的效率较高,那么顺着这个思路我们可以考虑将数据存储到内存中,来提高访问效率,但是内存一般都较小,所以我们只将经常访问的数据加载到内存中,不经常访问的数据不进行加载,根据这个思想Redis应运而生。
1. Redis介绍
Redis(Remote Dictionary Server)是一种开源的高性能键值存储数据库,广泛应用于缓存、消息队列、实时分析和其它需要快速数据访问的场景。以下是对Redis的详细介绍:
1.1 基本概念
- 类型:Redis是一个基于内存的键值存储(Key-Value Store),同时支持多种数据结构。
- 数据结构:Redis不仅支持基本的字符串数据,还支持列表、集合、有序集合、哈希表、位图、HyperLogLog以及地理空间索引等复杂数据结构。
- 协议:Redis使用自定义的协议(RESP,REdis Serialization Protocol)进行客户端与服务器之间的通信。
1.2 主要特性
- 高性能:Redis因其数据保存在内存中,能够实现非常低的延迟和极高的吞吐量。对于大多数操作,Redis可以在微秒级别完成。
- 持久化:Redis支持多种持久化机制,包括:
- RDB(Snapshot):定期将内存中的数据快照保存到硬盘。
- AOF(Append Only File):记录每个写命令,以便在重启时重放命令恢复数据。
- 主从复制:支持主从复制(Master-Slave)架构,可以实现数据的高可用性和负载均衡。
- 分布式存储:Redis提供Redis Cluster特性,实现数据的分片存储以支持更高的并发访问。
- 事务:支持事务,多个操作可以通过
MULTI
、EXEC
、WATCH
等命令封装为一个原子操作。 - 发布/订阅:内置的消息发布/订阅功能,允许客户端订阅特定频道并接收发布的消息。
- Lua脚本支持:Redis支持使用Lua脚本进行原子操作,可以在命令执行过程中同时执行复杂的逻辑。
1.3 使用场景
- 缓存:Redis被广泛用于缓存热门数据,以减少数据库负载并加速数据访问。
- 会话存储:应用程序可以使用Redis保存用户会话信息,提供快速的读取和写入。
- 实时数据分析:适合处理高频率的实时数据,如实时统计和用户行为分析。
- 排行榜和计数器:利用Redis的有序集合功能,轻松实现排行榜、计数器等功能。
- 消息队列:Redis的列表和发布/订阅功能可用于轻量级的消息队列系统。
1.4 优势
- 简单易用:Redis拥有简单且直观的命令行接口和丰富的客户端库,支持多种编程语言(如Python、Java、Node.js等)。
- 灵活性:多样的数据结构和功能使得Redis可以灵活应对不同的应用需求。
- 高可用性:通过主从复制和高可用模式(Redis Sentinel),Redis可以有效避免单点故障。
1.5 总结
Redis是一种功能强大且高效的数据库解决方案,特别适合需要快速数据访问和高并发处理的应用。无论在现代Web应用、分布式系统、实时分析还是大数据处理场景中,Redis都扮演着越来越重要的角色。凭借其高性能和灵活性,Redis已经成为开发者和企业的热门选择。
2. Redis下载
Redis默认的端口为6379
2.1 Windows操作系统
Redis下载:Releases · microsoftarchive/redis (github.com)https://github.com/microsoftarchive/redis/releases
进入下载界面后选择版本下载zip文件,进行解压,解压后的目录如下
redis-server.exe是服务端,redis-cli.exe是客户端;当我们使用redis时要先将服务端启动,之后再打开客户端,其中redis.windows-service.conf为redis的配置文件
2.2 Linux操作系统
Redis下载:Index of /releases/https://download.redis.io/releases/
安装步骤:
1.将redis的安装包上传到linux
2.解压安装包,命令:tar -zxvf 文件名/安装目录
3.安装redis的依赖环境gcc,命令:yum install gcc-c++
4.进入redis的安装目录,进行编译,命令:make
5.进入redis的src目录,进行安装,命令:make install
安装完成的redis的目录如下:
对redis进行配置,命令:vim redis.conf,进入后按下【/】进入搜索模式
第一:搜索daemonzie,将其改为daemonzie yes;这个配置是将linux操作系统下的redis改为后台运行,不让其运行时进行霸屏
第二:搜索requirepass,将其改为 requirepass 密码,这一项配置可要可不要,默认是注释掉了
第三:搜索bind,将其bind 127.0.0.1注释掉,这样就可以远程连接redis
启动src/redis-server ./redis.conf
关闭redis可以采用杀进程的方法,命令ps -ef | grep redis查出redis的进程号,之后kill -9 redis进程号进行杀除
3. Redis的数据结构
Redis是一个基于内存的键值存储(Key-Value Store),其中key是字符串类型value有五种常见的数据类型:
1.字符串String 2.哈希hash 3.列表list 4.集合set 5.有序集合sorted set
数据结构解析图如下:
string 普通字符串常用
hash 适用与存储对象
list 按照插入顺序排序,可以有重复的元素
set 无序集合,没有重复的元素
sorted set 有序集合,没有重复的元素
4. Redis的操作命令及通用命令
4.1 字符串String操作命令
SET key value 设置指定key的值
GET key 获取指定key的值
SETEX key seconds value 设置指定的key值,并将可以的过期时间设置为seconds秒(常用于设置验证码)
SETNX key value 只有在key不存在时才会设置key
4.2 哈希hash操作命令
HSET key field value 将哈希表key中的字段field设置为value
HGET key field 获取存储在哈希表中的指定字段
HDEL key field 删除存在哈希表中的指定字段
HEYS key 获取哈希表中的所有字段
HVALUS key 获取哈希表中的所有值
HGETALL key 获取在哈希表中指定key的所有字段和值
4.3 列表list操作命令
LPUSH key value [value] 将一个或多个值插入到列表头部
LRANGE key start stop 获取列表指定范围内的元素
RPOP key 移除并获取列表最后一个元素
LLEN key 获取列表的长度
BRPOR key1 [key2] timeout 移除并获取列表最后一个元素,如果列表没有元素直到等待超时或发现可弹出元素为之
4.4 集合set操作命令
SADD key member [member] 向集合中添加一个或多个元素
SMEMBERS key 返回集合中的所有元素
SCARD key 获取集合的元素数
SINTER key1 [key2] 返回给定集合的交集
SUNION key1 [key2] 返回所有给定集合的并集
SDIFF key1 [key2] 返回给定所有集合的差集
SREM key member [member] 移除集合中一个或多个元素
4.5 集合Sorted set操作命令
Redis Sorted Set有序集合是String类型的元素的集合,且不允许重复的元素。每个元素都会关联一个double类型的分数。redis正是通过分数来为集合的元素进行从小到达的排序。有序集合的元素是唯一的,但是分数却可以重复。
ZADD key score1 member [score2 member]
向有序集合中添加一个或多个元素,或更新已有元素的分数
ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序集合指定区间的元素
ZINCRBY key increment member
有序集合中指定元素的分数加上增量increment
ZREM key member [member...]
移除有序集合的一个或多个元素
4.6 通用命令
KEY pattern 查找所有符合给定模式pattern的key
EXISTS key 检查给定的key是否存在
TYPE key 返回key所存储的值的类型
TTL key 返回给定key的剩余生存时间,以秒为单位
DEL key 该命令用于在key存在时删除key
5. Redis的图形化界面软件