首页 > 数据库 >Redis 安装部署与基础学习

Redis 安装部署与基础学习

时间:2024-10-25 22:02:45浏览次数:1  
标签:返回 部署 Redis 元素 redis value key 安装

Redis安装部署与学习

一、简介

Redis(Remote Dictionary Server)是一个开源的内存数据库,遵守 BSD 协议,它提供了一个高性能的键值(key-value)存储系统,常用于缓存、消息队列、会话存储等应用场景。也就是说redis数据库与我们之前学的MySQL,ClickHouse都不一样,是一个非关系型数据库。

总结:redis是一个基于内存的非关系型的键值对数据库

Redis特点(面试必问)

  • Redis是一个高性能key/value内存型数据库 在redis中,所有的数据形式都是以键值对的方式来存储的
  • Redis支持丰富的数据类型 string,list,set,sorted set,hash 指的是键值对中的值的类型
  • Redis支持持久化 持久化:将数据落盘,明天会详细说一说redis中的持久化
  • Redis单线程,单进程 由于是单线程和单进程的,所以它的线程是安全的,我们之前说的java中的多线程安全在分布式中不起作用,当时只针对一个JVM中是有效的。

二、安装教程

1、直接去Redis官网下载安装包Redis - The Real-time Data Platform;由于这是国外服务器可能会打不开网站,也可以去国内镜像网站下载,这里我选择的是华为云Index of redis-local我这边下载的是7.0.0版本

image-20241025211043080

2、下载好后上传到虚拟机解压安装,由于该部件是由C++编写的,所以我们要下载一些编译软件,下面跟我步骤。

1、上传到虚拟机 /usr/local/soft/package

2、解压
	tar -zxvf redis-7.0.0.tar.gz
	
3、进入解压后的文件
	cd /usr/local/soft/package/redis-7.0.0
	
4、安装gcc
	yum install -y gcc

5、安装tcl
	yum install -y tcl

6、开始编译
	make MALLOC=libc

7、编译完成后执行以下命令
	make install PREFIX=/usr/local/soft/redis

8、到这一步redis就已经解压,编译,安装完成。进入/usr/local/soft/redis目录启动redis服务
	redis-server

image-20241025212306165

三、修改端口号

# 1. redis服务启动的时候,如果单纯的就是redis-server命令启动,默认启动后会占用6379的端口号

# 2. 一个redis服务相当于一个新的redis数据库

# 3.修改端口号
	一台机器上可以同时启动多个redis服务,只要每个redis服务所占用的端口号不同即可,要想启动多个redis服务,就必须去修改端口号
  	在哪修改呢?在linux中,绝大部分的框架组件要想修改参数的话,可以去找到对应软件的配置文件,然后做修改
 	redis服务启动的时候会默认应用一个配置文件,默认服务启动的时候会去编译好的目录下找到一个叫做redis.conf的文件,并非是安装目录
  	只要是单纯的使用redis-server启动的话,都会去编译好的目录下找到一个叫做redis.conf的文件去启动,即便是修改了端口号,也是只能启动一个redis服务。
  	修改redis.conf文件中的port 6379---> port xxxx
  	指定端口号启动命令:redis-server /xxx/xx/redis.conf
  	
# 4. 配置环境变量,为了可以在任意目录下执行redis命令
	vim /etc/profile
	
	修改配置文件:
	export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
    export REDIS_HOME=/usr/local/soft/redis
    export PATH=.:$PATH:$JAVA_HOME/bin:$REDIS_HOME/bin
    
    保存退出:
    :wq
    
    让环境变量生效
    source /etc/profile

# 5. 客户端指定服务链接
	如果就默认的redis-cli链接的话,默认连接的是本机localhost(127.0.0.1)的6379端口号的redis服务
	指定连接某一台机器上的某个端口号的redis服务
	redis-cli -h 服务器的ip地址 -p 端口号
	举例:redis-cli -h localhost -p 7000

四、数据库操作

1、redis中库的说明

在使用redis的默认启动器启动的情况下,redis中有0~15一共16个库,默认使用的库是0

2、清空库

清空当前的库  FLUSHDB
清空全部的库  FLUSHALL

3、客户端使用中文

redis-cli  -p 7000 --raw

4、据库操作指令

# 1.Redis中库说明
- 使用redis的默认配置器动redis服务后,默认会存在16个库,编号从0-15 配置文件中有个database相关的
- 可以使用select 库的编号 来选择一个redis的库

# 2.Redis中清空库的指令
- 清空当前的库  FLUSHDB
- 清空全部的库  FLUSHALL

# 3.redis客户端显示中文
-	./redis-cli  -p 7000 --raw

5、操作key相关指令(分别演示案例)

# 1.DEL指令
- 语法 :  DEL key [key ...] 
- 作用 :  删除给定的一个或多个key 。不存在的key 会被忽略。多个key之间使用空格隔开
- 可用版本: >= 1.0.0
- 返回值: 被删除key 的数量。 

# 2.EXISTS指令
- 语法:  EXISTS key [key ...]
- 作用:  检查给定key 是否存在。多个key之间使用空格隔开,只要有一个key存在,返回值就是1 新版本中会提示几个键存在
- 可用版本: >= 1.0.0
- 返回值: 若key 存在,返回的是存在的个数。 

# 3.EXPIRE 只能对已经存在的key设置过期时间
- 语法:  EXPIRE key seconds
- 作用:  为给定key 设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除。
- 可用版本: >= 1.0.0
- 时间复杂度: O(1)
- 返回值:设置成功返回1 。

# 4.KEYS
- 语法 :  KEYS pattern
- 作用 :  查找所有符合给定模式pattern 的key 。
- 语法:
	KEYS * 匹配数据库中所有key 。
	KEYS h?llo 匹配hello ,hallo 和hxllo 等。
	KEYS h*llo 匹配hllo 和heeeeello 等。
	KEYS h[ae]llo 匹配hello 和hallo ,但不匹配hillo 。特殊符号用 "\" 隔开
- 可用版本: >= 1.0.0
- 返回值: 符合给定模式的key 列表。

# 5.MOVE
- 语法 :  MOVE key db  (move name 1----将name键移动到1号库)
- 作用 :  将当前数据库的key 移动到给定的数据库db 当中。
- 可用版本: >= 1.0.0
- 返回值: 移动成功返回1 ,失败则返回0 。

# 6.PEXPIRE
- 语法 :  PEXPIRE key milliseconds
- 作用 :  这个命令和EXPIRE 命令的作用类似,但是它以毫秒为单位设置key 的生存时间,而不像EXPIRE 命令那样,以秒为单位。
- 可用版本: >= 2.6.0
- 时间复杂度: O(1)
- 返回值:设置成功,返回1  key 不存在或设置失败,返回0

# 7.PEXPIREAT
- 语法 :  PEXPIREAT key milliseconds-timestamp
- 作用 :  这个命令和EXPIREAT 命令类似,但它以毫秒为单位设置key 的过期unix 时间戳,而不是像EXPIREAT那样,以秒为单位。
- 可用版本: >= 2.6.0
- 返回值:如果生存时间设置成功,返回1 。当key 不存在或没办法设置生存时间时,返回0 。(查看EXPIRE 命令获取更多信息)

# 8.TTL(time to live)
- 语法 :   TTL key
- 作用 :   以秒为单位,返回给定key 的剩余生存时间(TTL, time to live)。
- 可用版本: >= 1.0.0
- 返回值:
	当key 不存在时,返回-2 。
	当key 存在但没有设置剩余生存时间时,返回-1 。
	否则,以秒为单位,返回key 的剩余生存时间。
- Note : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。

# 9.PTTL
- 语法 :  PTTL key
- 作用 :  这个命令类似于TTL 命令,但它以毫秒为单位返回key 的剩余生存时间,而不是像TTL 命令那样,以秒为单位。
- 可用版本: >= 2.6.0
- 返回值: 当key 不存在时,返回-2 。当key 存在但没有设置剩余生存时间时,返回-1 。
- 否则,以毫秒为单位,返回key 的剩余生存时间。
- 注意 : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。

# 10.RANDOMKEY
- 语法 :  RANDOMKEY
- 作用 :  从当前数据库中随机返回(不删除) 一个key 。
- 可用版本: >= 1.0.0
- 返回值:当数据库不为空时,返回一个key 。当数据库为空时,返回nil 。

# 11.RENAME
- 语法 :  RENAME key newkey
- 作用 :  将key 改名为newkey 。当key 和newkey 相同,RENAME 命令将覆盖旧值。如果键不存在,才报错
- 可用版本: >= 1.0.0
- 返回值: 改名成功时提示OK ,失败时候返回一个错误。

# 12.TYPE
- 语法 :  TYPE key
- 作用 :  返回key 所储存的值的类型。
- 可用版本: >= 1.0.0
- 返回值:
	none (key 不存在)
	string (字符串)
	list (列表)
	set (集合)
	zset (有序集)
	hash (哈希表)

2、String类型(分别演示)

1. 内存存储模型

image-20200623132104399

2. 常用操作命令

命令 说明
set 设置一个key/value
get 根据key获得对应的value
mset 一次设置多个key value
mget 一次获得多个key的value
getset 获得原始key的值,同时设置新值
strlen 获得对应key存储value的长度
append 为对应key的value追加内容
getrange 索引0开始 截取value的内容 到末尾-1 [开始,结束]
setex 设置一个key存活的有效期(秒)
psetex 设置一个key存活的有效期(毫秒)
setnx 存在不做任何操作,不存在添加
msetnx原子操作(只要有一个存在不做任何操作) 可以同时设置多个key,只有有一个存在都不保存
decr 进行数值类型的-1操作
decrby 根据提供的数据进行减法操作
Incr 进行数值类型的+1操作
incrby 根据提供的数据进行加法操作
Incrbyfloat 根据提供的数据加入浮点数(不是四舍五入)

3、List类型

list 列表 相当于java中list 集合 特点 元素有序(插入和取出的顺序一致) 且 可以重复,key还是一个字符串,值是一个list

1.内存存储模型

image-20200623161114380

2.常用操作指令

命令 说明
lpush 将某个值加入到一个key列表头部 lpush list1 xiaohu xiaohei xiaoming 当列表不存在的时候会进行创建
lpushx 同lpush,但是必须要保证这个key存在 必须在列表进行存在的情况下从左插入
rpush 将某个值加入到一个key列表末尾
rpushx 同rpush,但是必须要保证这个key存在
lpop 返回和移除列表左边的第一个元素
rpop 返回和移除列表右边的第一个元素
lrange 获取某一个下标区间内的元素 lrange list 0 -1
llen 获取列表元素个数
lset 设置某一个指定索引的值(索引必须存在)
lindex 获取某一个指定索引位置的元素
lrem 删除重复元素
ltrim 保留列表中特定区间内的元素
linsert 在某一个元素之前,之后插入新元素

4、set类型

特点: Set类型 Set集合 元素无序 不可以重复

1.内存存储模型

image-20200623193634316

2.常用命令 (如果set集合没有元素,key也就不存在了)

命令 说明
sadd 为集合添加元素
smembers 显示集合中所有元素 无序
scard 返回集合中元素的个数
spop 随机返回一个元素 并将元素在集合中删除
smove 从一个集合中向另一个集合移动元素 必须是同一种类型
srem 从集合中删除一个元素
sismember 判断一个集合中是否含有这个元素
srandmember 随机返回元素 后面可以加数字 表示每次返回的个数
sdiff 去掉第一个集合中其它集合含有的相同元素
sinter 求交集
sunion 求和集

4、 ZSet类型

特点: 可排序的set集合 排序 不可重复

ZSET 官方 可排序SET sortSet

1.内存模型

image-20200623194903967

2.常用命令

命令 说明
zadd 添加一个有序集合元素 zadd zset 2 xiaohu 3 xiaohu2
zcard 返回集合的元素个数
zrange 升序 zrevrange 降序 返回一个范围内的元素 如果想看看分数 withscores
zrangebyscore 按照分数查找一个范围内的元素 zrangebyscore zset 0 20 withscores limit 0 2
zrank 返回排名
zrevrank 倒序排名
zscore 显示某一个元素的分数
zrem 移除某一个元素
zincrby 给某个特定元素加分

5、 hash类型

特点: value 是一个map结构 存在key value key 无序的

redis key(String) value(map)

Map<String,Map<String,value>> map

举例:map name zhangsan

1.内存模型

image-20220511234124908

2.常用命令

命令 说明
hset 设置一个或多个key/value对
hget 获得一个key对应的value
hgetall 获得所有的key/value对
hdel 删除某一个key/value对
hexists 判断一个key是否存在
hkeys 获得所有的key
hvals 获得所有的value
hmset 设置多个key/value
hmget 获得多个key的value
hsetnx 设置一个不存在的key的值
hincrby 为value进行加法运算(只能针对数值做运行)
hincrbyfloat 为value加入浮点值

第一天说完上面知识点后,介绍可视化工具的安装使用(引入修改配置文件,使得远程连接)mac电脑的叫做medis https://getmedis.com/

下载官网:https://redisdesktop.com/download

注意问题:

​ 1、如果还是连接不上,查看防火墙

​ 2、端口被占用,可能是redis服务起多了 ps aux|grep redis

标签:返回,部署,Redis,元素,redis,value,key,安装
From: https://www.cnblogs.com/qianzhiqiang798/p/18503339

相关文章

  • 香橙派部署RKNN模型出现重复框选和置信度大于1(真解决办法)
    在香橙派部署yolov5模型时,需要转化两次模型,一次在PC端转为onnx文件,一次在UbuntuPC上转为rknn文件,详情请看这篇博客:香橙派Pi5Plus(RK3588)部署yolov5模型(不讲环境搭建,只讲步骤)_rk3588yolov-CSDN博客https://blog.csdn.net/Z0603013xxx/article/details/1427372661.出现置信度......
  • Tomcat部署
    五个步骤关闭startup.dat使用Ctrl+c。更改默认端口找到8080端口更改即可更改startup.bat输出乱码问题原来此位置是utf-8改为GBK即可......
  • 如何在Windows上更改Docker的默认安装路径
    在Windows上更改Docker的默认安装路径可以通过修改系统注册表、使用符号链接、或通过Docker的配置文件实现。首先、确保Docker服务已停止运行,再进行路径的更改操作。修改系统注册表涉及风险,因此推荐备份注册表,再进行编辑。使用符号链接方法则相对安全,但需要管理员权限。通过Docker......
  • 国产东方通消息队列TongLINKQ8.1服务端安装步骤
    一、服务端安装groupaddtlq# 新建组useradd-m-gtlqtlq# 新建tlq用户并指定组tlqcd/home/tlq/# 切换到安装目录并上传安装包tar-xzvfInstall_TLQ_Standard_Linux2.6.32_x86_64_8.1.16.0.tar.gz#解压安装文件cd/home/tlq/TLQ8/设置环境变量c......
  • redis安装与部署
    一、下载1、华为镜像站下载https://mirrors.huaweicloud.com/redis/2、将下载的资料包上传到Linux中3、解压缩文件tar-zxvfredis-7.0.10.tar.gz4、安装gcc,和tclyuminstall-ygccyuminstall-ytcl5、进入解压目录执行下面的命令makeMALLOC=libc6、......
  • 易考八股文之Redis在你项目中怎么用,如果Redis宕机,应用服务还会响应吗?会造成哪些问题,如
    在项目中,Redis可以用于多种用途,例如:缓存数据:将经常访问的数据存储在Redis中,减少对后端数据库的查询压力,提高应用的响应速度。会话管理:存储用户会话信息,方便在分布式系统中管理用户登录状态等。如果Redis宕机,应用服务可能仍然会响应,但会面临一些问题:数据丢失:如果没有配置持久......
  • Redis高并发超时问题
     StackExchange.Redis驱动有个超时问题,并发比较高的时候就会出现类似以下错误,比如开3000个线程: StackExchange.Redis.RedisConnectionException:Itwasnotpossibletoconnecttotheredisserver(s).Errorconnectingrightnow.Toallowthismultiplexertocontin......
  • Redis
    常见面试题:Redis简介为什么要用Redis?Redis的优点Redis的应用场景LinuxCentos7安装Redis与Window10安装RedisRedis客户端介绍与使用Redis核心配置文件详解RedisKey命名规范Redis最常用的5种数据类型及其对应的命令Redis的性能测1什么是Redis?Redis是一个由C语言编......
  • sentinel安装
    sentinel安装获取sentinel.zip,并上传至/data/soft目录下通过网盘分享的文件:sentinel.zip链接:https://pan.baidu.com/s/1ogfz3rLBiTheoekVUQLbGA?pwd=1234提取码:1234--来自百度网盘超级会员v7的分享解压sentinel.zip:unzipsentinel.zip注意:如果unzip命令不可用则需......
  • kubernetes【k8s介绍】【快速部署应用,管理容器】
    k8s提供:集中式管理集群的方法,也可快速部署应用1.关于部署方案2.什么时候需要k8s当你的应用只是跑在一台机器,直接一个docker+docker-compose就够了,方便轻松;当你的应用需要跑在3,4台机器上,你依旧可以使用每台机器单独配置运行环境+负载均衡器;当你的应用需要跑在10,20台机器......