目录
一、概述
1.介绍
Redis是一个开源的、基于内存的高性能键值存储系统。它是由Salvatore Sanfilippo开发的,最初是用作LLOOGG(一个实时日志分析工具)的缓存数据库。随着时间的推移,Redis逐渐发展成为一个功能强大、广泛应用的数据存储和缓存解决方案。
Redis的核心特点是高性能和丰富的数据结构支持。它将数据存储在内存中,因此具有极快的读写速度。此外,Redis还采用了一系列优化策略,如异步IO、事件驱动等,以提高系统的吞吐量和响应速度。Redis还支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等,每种数据结构都有相应的操作命令,可以对其进行快速、高效的增删改查操作。
Redis提供了两种持久化方式:RDB和AOF。RDB是一种快照方式,可以将当前内存中的数据保存到磁盘上的一个二进制文件中。RDB文件是一个紧凑的、压缩的二进制格式,适合用于备份和恢复数据。AOF是一种追加日志方式,可以将每个写操作都追加到一个日志文件中。通过重新执行这些写操作,可以恢复出完整的数据集。AOF文件是一个文本文件,可以通过简单的文本编辑器查看和修改。
除了高性能和持久化支持,Redis还具备分布式特性。它支持主从复制、哨兵和集群等机制,可以将数据分布在多个节点上,提高系统的可扩展性和容错性。主从复制可以实现数据的读写分离和故障恢复,哨兵可以监控节点状态并进行自动故障转移,集群可以将数据分片存储在多个节点上,提供更高的性能和可用性。
Redis还提供了许多其他功能,如发布/订阅、事务、Lua脚本等。发布/订阅功能可以实现消息的发布和订阅,用于构建实时通信和事件驱动的系统。事务功能可以将多个命令组合成一个原子操作,保证操作的一致性。Lua脚本功能可以在Redis服务器端执行Lua脚本,提供更复杂的业务逻辑处理能力。
总之,Redis是一个功能强大、性能优越的键值存储系统,广泛应用于缓存、队列、计数器、排行榜等场景。它提供了丰富的数据结构和操作命令,具备高性能、持久化和分布式支持,为应用程序提供快速、可靠的数据访问服务。
2.特点
Redis的特点如下:
-
高性能:Redis将数据存储在内存中,因此具有极高的读写性能。它采用了多种优化策略,如异步IO、事件驱动等,来提高系统的吞吐量和响应速度。
-
数据持久化:Redis支持数据的持久化存储,可以将数据写入磁盘,以防止系统故障时的数据丢失。它提供了两种持久化方式:RDB(Redis Database)和AOF(Append Only File)。
-
RDB是一种快照方式,可以将当前内存中的数据保存到磁盘上的一个二进制文件中。RDB文件是一个紧凑的、压缩的二进制格式,适合用于备份和恢复数据。
-
AOF是一种追加日志方式,可以将每个写操作都追加到一个日志文件中。通过重新执行这些写操作,可以恢复出完整的数据集。AOF文件是一个文本文件,可以通过简单的文本编辑器查看和修改。
-
-
多种数据结构支持:Redis支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。每种数据结构都有相应的操作命令,可以对其进行增删改查等操作。
-
字符串是最基本的数据结构,可以存储任意类型的数据,如整数、浮点数、二进制数据等。
-
哈希表是一个键值对的集合,可以用于存储对象。每个键值对都是一个字段和值的映射关系。
-
列表是一个有序的字符串集合,可以进行插入、删除、查找等操作。它还支持各种列表操作,如获取子列表、插入元素、删除元素等。
-
集合是一个无序的字符串集合,可以进行添加、删除、查找、求交集、求并集等操作。
-
有序集合是一个有序的字符串集合,每个元素都有一个分数,可以根据分数进行排序和范围查找。
-
-
分布式支持:Redis支持分布式部署,可以将数据分布在多个节点上,提高系统的可扩展性和容错性。它提供了主从复制、哨兵和集群等机制,可以实现数据的高可用和自动故障转移。
总之,Redis是一个功能强大、性能优越的键值存储系统,可以广泛应用于缓存、队列、计数器、排行榜等场景,为应用程序提供快速、可靠的数据访问服务。
二、安配
1. 安装
打开虚拟机Linux的Centos,进行开机,并且使用MobaXterm进行连接。
进入我们的资源管理文件夹中
输入命令 : cd /root/javaCloudJun/software/
将redis下载到本地为压缩包,并且将redis的资源包从本地拖入到虚拟机中
下载 redishttps://redis.io/download/输入命令 : ll ( 可以查看到 )
并且对redis资源包进行解压
输入命令 : tar -xvf redis-5.0.0.tar.gz
解压后可以查看到有了redis文件
进入到redis的文件里面
命令 : cd redis-5.0.0
进行安装redis
命令 : make
之后进行检测安装情况
命令 : make install
检测完成后,修改redis.conf文件
将文件中 daemonize no 改为 daemonize yes
输入命令 : vim redis.conf ( 进入到redis.conf文件中 )
进入后 找到daemonize no 按 i 进入编辑模式 修改为 daemonize yes
修改完成后 按 Esc 退出编辑 之后输入 :wq ( 保存修改并且退出 )
操作如图 :
修改完成后,启动redis
命令 : ./src/redis-server redis.conf
启动redis后,进行检查
命令 : lsof -i:6379 ( 有数据返回说明检查完成 )
测试redis启动是否成功
命令 : ./src/redis-cli ( 连接到到端口 )
命令 : ping ( 输出PONG说明连接成功 )
2. 配置
测试完成,退出redis,并且关闭redis的进程
命令 : exit ( 退出连接 )
命令 : lsof -i:6379 ( 获取到PID )
命令 : kill -9 11833 ( 拿到该PID关闭该进程 )
并且再次查看,没有数据输出说明关闭成功。
修改 redis.conf 文件,需要对主机(主机的电脑)进行连接,就需要将绑定本机(虚拟机)的IP进行注释,并且设置连接的登入密码。
命令 : vim redis.conf ( 进入到redis.conf文件进行编辑 )进入后输入 : :/bind 127.0.0.1 ( 找到绑定的本地IP )
按 i 进行编辑 在bind 127.0.0.1的前面加一个# 进行注释
如图 :
注释IP后,按Esc退出
并且输入 : :/requirepass
在 按 i 进入编辑模式
将requirepass前面的#删减掉
并且将后面的密码修改为自己的密码,我这里设置 123456
编辑完成后,按Esc退出
并且输入 : :wq ( 保存编辑并且退出 )
如图:
主机(自己的电脑)需要连接,就需要开放端口,redis的端口为 : 6379
#设置防火墙开放 6379 端口
输入命令 : firewall-cmd --zone=public --add-port=6379/tcp --permanent
#并且更新防火墙,查看开放端口
输入命令 : firewall-cmd --reload && firewall-cmd --list-port
端口开放后,重新启动redis
命令 : ./src/redis-server redis.conf
启动后,检查是否完成
命令 : lsof -i:6379 ( 有数据返回说明完成 )
之后连接到端口,查看本机是否可以连接完成
命令 : ./src/redis-cli ( 连接到端口 )
命令 : ping ( error连接失败 )
退出端口,将我们的本地IP,端口号及设置的密码 (123456) 再进行连接。
命令 : exit ( 退出 )
命令 : ./src/redis-cli -h 127.0.0.1 -p 6379 -a 123456
( 注 : -h 是IP -p 是端口 -a 是密码 )
再次测试连接
命令 : ping ( 输出PONG说明连接成功 )
如图 :
3. 主机连接
1.Linux连接
在主机中,打开数据库(RedisDesktopManager)进行连接Redis
RedisDesktopManager数据库的下载https://docs.redisdesktop.com/en/2019/install/
( 下载后,可能需要解压,之后就是傻瓜式安装即可 )
然后打开RedisDesktopManager数据库
如图操作 :
2.windows连接
在本地从官网下载Redis-x64-3.2.100资源包进行解压,然后进入解压后的文件,
将redis.windows.conf文件进行修改,修改内容一样
在bind 127.0.0.1的前面加一个# 进行注释
并且将后面的密码修改为自己的密码,我这里设置 123456
在创建一个文件,名为 : redis.bat
该文件内容为 :
cd Redis-x64-3.2.100
redis-server redis.windows.conf将该文件放入解压后的文件中,之后双击开启文件,会有个黑窗口,不用关掉
进入RedisDesktopManager数据库,进行windows连接
操作如图 :
三、命令
连接后,会有16个数据库
在虚拟机中输入 : select 3 ( 是进入为3的数据库 )
1. 字符串(String)
增加值 //保存
set key的名称 key的值
如以下命令 :
# 查看值//获取
get key的名称
如以下命令 :
# type key //查看类型
type key的名称
如以下命令 :
// 给键值对设置过期时间,数据过来该key和值自动删除
setex key的名称 60 key的值
如以下命令 :
# ttl ikun // 获取键值对剩余的存活时间
# ttl key的名称
如以下命令 :
2. 哈希(Hash)
Redis中哈希(Hash)是一种键值对的集合,其中每个键都对应一个值。哈希通常用于存储对象,其中对象的属性对应哈希的键,属性值对应哈希的值。以下是一些常用的Redis哈希命令:
1. HSET key field value :设置指定key中指定field的值为value。
2. HGET key field:获取指定key中指定field的值。
3. HDEL key field1 field2 ... :删除指定key中指定的field。
4. HEXISTS key field : 检查指定key中是否存在指定的field。
5. HGETALL key : 获取指定key中所有的field-value对。
6. HINCRBY key field increment :将指定key中指定field的值增加指定的增量。
7. HKEYS key :获取指定key中所有的field。
8. HLEN key :获取指定key中field的数量。
9. HMGET key field1 field2 ... :获取指定key中指定的field的值。
10. HMSET key field1 value1 field2 value2 ... :同时设置指定key中多个field的值。
11. HSETNX key field value :当指定key中指定field不存在时,设置其值为value。
12. HVALS key :获取指定key中所有的value。
除了以上命令,Redis还提供了一些其他的哈希命令,如HINCRBYFLOAT、HSCAN等,用于处理浮点数增量操作、哈希扫描等操作。
需要注意的是,Redis的哈希是一个无序的键值对集合,其中键和值都可以是任意类型的数据。在使用哈希命令时需要注意数据的类型和格式。另外,Redis的哈希命令都是原子操作,保证了操作的一致性和并发性。
可以根据以上的命令结构进行输入命令,保存你需要的 哈希(Hash)值到数据库
3. 列表(List)
Redis中列表(List)是一个有序的字符串列表,其中每个元素都可以是任意类型的数据。以下是一些常用的Redis列表命令:
1. LPUSH key value1 value2 ...:将一个或多个值插入到列表的左侧。
2. RPUSH key value1 value2 ...:将一个或多个值插入到列表的右侧。
3. LPOP key:移除并返回列表的左侧第一个元素。
4. RPOP key:移除并返回列表的右侧第一个元素。
5. LINDEX key index:获取列表中指定索引位置的元素。
6. LINSERT key BEFORE|AFTER pivot value:在列表中指定元素的前面或后面插入一个新元素。
7. LLEN key:获取列表的长度。
8. LRANGE key start stop:获取列表中指定范围内的元素。
9. LREM key count value:从列表中删除指定数量的元素。
10. LSET key index value:设置列表中指定索引位置的元素的值。
11. LTRIM key start stop:截取列表中指定范围内的元素,保留指定范围内的元素,其余元素删除。
除了以上命令,Redis还提供了一些其他的列表命令,如BLPOP、BRPOP、LINSERT、RPOPLPUSH等,用于处理阻塞弹出、列表插入、列表弹出和列表移动等操作。
需要注意的是,Redis的列表是一个有序的字符串列表,其中元素可以是任意类型的数据。在使用列表命令时需要注意数据的类型和格式。另外,Redis的列表命令都是原子操作,保证了操作的一致性和并发性。
可以根据以上的命令结构进行输入命令,保存你需要的 列表(List)值到数据库
4. 集合(Set)
Redis中集合(Set)是一个无序的、不重复的字符串集合,其中每个元素都可以是任意类型的数据。以下是一些常用的Redis集合命令:
1. SADD key member1 member2 ... :向集合中添加一个或多个元素。
2. SMEMBERS key:获取集合中的所有元素。
3. SISMEMBER key member:检查集合中是否存在指定的元素。
4. SCARD key:获取集合中元素的数量。
5. SREM key member1 member2 ...:从集合中移除一个或多个元素。
6. SPOP key:随机移除并返回集合中的一个元素。
7. SRANDMEMBER key [count]:随机获取集合中的一个或多个元素。
8. SINTER key1 key2 ...:获取多个集合的交集。
9. SUNION key1 key2 ...:获取多个集合的并集。
10. SDIFF key1 key2 ...:获取多个集合的差集。
11. SINTERSTORE destination key1 key2 ...:将多个集合的交集存储到一个新的集合中。
12. SUNIONSTORE destination key1 key2 ...:将多个集合的并集存储到一个新的集合中。
13. SDIFFSTORE destination key1 key2 ...:将多个集合的差集存储到一个新的集合中。
除了以上命令,Redis还提供了一些其他的集合命令,如SMOVE、SSCAN等,用于集合的移动和集合的扫描等操作。
需要注意的是,Redis的集合是一个无序的、不重复的字符串集合,其中元素可以是任意类型的数据。在使用集合命令时需要注意数据的类型和格式。另外,Redis的集合命令都是原子操作,保证了操作的一致性和并发性。
可以根据以上的命令结构进行输入命令,保存你需要的 集合(Set)值到数据库
这里有更详细的教程,并且了解这些命令,可以进入到该网站深入学习,让增加变强
Redis 命令的详细深入学习了解https://www.w3cschool.cn/redis/redis-commands.html