目录
一、Redis简介
NoSQL与SQL的区别
二、Linux上安装redis
上传并解压redis.gz
进入 redis的解压目录,执行命令 make
编辑
修改redis为守护进程
们测试一下能否远程连接RedisDesktopManager客户端
开放6379端口
授权,允许远程连接
三、redis命令
Redis字符串(String)
Redis哈希(Hash)
Redis列表(List)
Redis集合(Set)
一、Redis简介
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与SQL的区别
NoSQl数据库(非关系数据库):Redis、Ehcache、MongoDB等 ----直接通过键值对的方式取值,数据之间不存在关系
SQL数据库(关系数据库):SQLServer、Oracle、MySQL等 ----通过查询表的方式获取数据
二、Linux上安装redis
上传并解压redis.gz
将Redis的安装包拖进MobaXterm中
#1.解压redis
tar -zxvf redis-5.0.0.tar.gz
#2.安装gcc
yum install -y gcc
Redis与Tomcat最大的区别就是,redis的使用需要gcc的环境支持,才能使用
安装好之后还需要将Redis编译一下
进入 redis的解压目录,执行命令 make
#3.编译redis
cd /redis-5.0.0
make(需进入Redis的解压目录执行命令-编译)
编译完成之后,redis就能运行了,但是是非守护进程方式。而非守护进程不能输入其他命令,想输入的时候只能Ctrl+c,但Ctrl+c的时候服务会停止,所有我们需要修改redis的配置,改成守护进程
注:Redis端口号:6379
修改redis为守护进程
#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)
们测试一下能否远程连接RedisDesktopManager客户端
可以看到,是连接不上的。
原因:1.redis的端口号6379没有开放。2. redis.conf 里面还缺少了配置
开放6379端口
开放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:密码
连接Redis出现无法连接到Redis连接被拒绝。
问题:Could not connect to Redis at 127.0.0.1:6379: Connection refused
可能原因:未启动redis服务器端
redis-server redis.conf
就OK啦
三、redis命令
切换数据库
Redis字符串(String)
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)
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列表(List)
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)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
# sadd key value1 [value2] #向集合添加一个或多个元素
sadd hobby lanqiu zuqiu bingpangqiu zhuoqiu
# scard key #获取集合中的元素数量
scard hobby
# exists key #是否存在
exists hobby