目录
们测试一下能否远程连接RedisDesktopManager客户端
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。
它支持 字符串(String)、哈希表(hash)、列表(list)、集合(set)、有序集合(zset-- sort set),位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区
Redis用途:1. 数据库 2. 缓存
作用:提升程序运行的效率与性能
集群:哨兵、主从、分片式
- #下载
- redis-5.0.0.tar.gz(linux)
- Redis-x64-3.2.100.msi(window安装版)
- Redis-x64-3.2.100.zip(window解压版)
NoSQl数据库(非关系数据库):Redis、Ehcache、MongoDB等 ----直接通过键值对的方式取值,数据之间不存在关系
SQL数据库(关系数据库):SQLServer、Oracle、MySQL等 ----通过查询表的方式获取数据
将Redis的安装包拖进MobaXterm中
- #1.解压redis
- tar -zxvf redis-5.0.0.tar.gz

- #2.安装gcc
- yum install -y gcc
-
- Redis与Tomcat最大的区别就是,redis的使用需要gcc的环境支持,才能使用

安装好之后还需要将Redis编译一下
- #3.编译redis
- cd /redis-5.0.0
- make(需进入Redis的解压目录执行命令-编译)

编译完成之后,redis就能运行了,但是是非守护进程方式。而非守护进程不能输入其他命令,想输入的时候只能Ctrl+c,但Ctrl+c的时候服务会停止,所有我们需要修改redis的配置,改成守护进程
注:Redis端口号:6379
- #4.修改redis.conf文件,将Redis修改为守护进程
- 先将redis.conf 备份
- cp redis.conf redis.conf.bak20220809
- 进入redis.conf文件,将daemonize no 改为 daemonize yes

注意:当连接工具不能直接打开文件编辑,那么需要通过以下方法进行快速查找
# Linux在文件中查找关键字 vim xxx.conf 先"/" 然后"关键字" 再enter; 如果第一个不是你想找到的目标,"n"指找下一个
- #5.启动redis
- ./(src-需要在src里面/)redis-server ../redis.conf
- 通过哪个配置文件去启动Redis

- #6.测试redis启动是否成功
- ./(src/)redis-cli
- ping
- (会回应一个 PONG)

![]()

可以看到,是连接不上的。
原因:1.redis的端口号6379没有开放。2. redis.conf 里面还缺少了配置
- 开放redis端口
- firewall-cmd --zone=public --add-port=6379/tcp --permanent
- #更新防火墙规则
- firewall-cmd --reload
- #查看防火墙列表
- firewall-cmd --zone=public --list-ports

再次修改redis.conf文件
更改密码
更改完之后查看一下redis的服务是否是启动的 
服务还是启动的,但我们的配置已经更改了,所以我们需要杀掉redis进程
- kill -9 进程 pid
- 再次启动
- ./(src/)redis-server ../redis.conf
- 就能远程连接了
注意 lsof -i:6379 里的数字
再看一下进程,就会发现已经关闭了
再次远程连接RedisDesktopManager

看到这个就代表连接成功了。
再次测试redis启动是否成功
为什么我们ping了之后没有返回pong呢?
因为我们配置了外连接和密码,测试redis启动的命令也需要更改
- 客户端redis-cli链接redis,重新测试
- ./src/redis-cli -h 127.0.0.1 -p 6379 -a 123456
- ping
- select 1
-h:本机IP地址,-p:端口号,-a:密码

问题:Could not connect to Redis at 127.0.0.1:6379: Connection refused
可能原因:未启动redis服务器端
redis-server redis.conf

就OK啦
切换数据库

String(字符串) 它是redis最基本的数据类型,一个key对应一个value,需要注意是一个键值最大存储512MB
- # set key //保存
- set name zs
- set age 12
- set sex nan
-
- # get key //获取
- get name
-
- # del key //删除
- del name
-
- # type key //查看类型
- type age //string 说明type返回的是键值对存储类型,而不是值存储类型
-
- # keys *或keys key //查看所有或者指定的key
- keys *
- # SETEX KEY_NAME TIMEOUT VALUE// 给键值对设置过期时间
- setex zs 60 live
-
- # ttl key// 获取键值对剩余的存活时间
- ttl zs

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
- # hset key field1 value1 [field2 value2] #同时将多个field-value设置到哈希表key中
- hset user name zs age 12 sex nv
-
- # hget key field #获取指定的字段值
- hget user age
-
- # hdel key field #删除指定的字段值
- hdel user age
-
- # hgetall key #查询指定key的所有字段
- hgetall user
-
- # hexists key field #查询指定key中的字段是否存在
- hexists user name
-
- # hlen key #获取指定key中的长度
- hlen user
Redis列表是简单的字符串列表,按照插入顺序排序。
你可以添加一个元素到列表的头部(左边)或者尾部(右边)
- # lpush key value1 value2 value3 #将一个或多个值插入到列表头部
- lpush en a b c d e f g
-
- # llen key #获取列表的长度
- llen en
-
- # lindex key index #根据索引获取列表中的元素
- lindex en 1 #返回f,说明下标从0开始,同时先进后出
-
- # lrange key start sop #查看指定范围内的元素
- lrange en 1 3#返回fed,说明下标从0开始,同时先进后出
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
- # sadd key value1 [value2] #向集合添加一个或多个元素
- sadd hobby lanqiu zuqiu bingpangqiu zhuoqiu
-
- # scard key #获取集合中的元素数量
- scard hobby
-
- # exists key #是否存在
- exists hobby