首页 > 数据库 >Redis基础知识学习笔记(二)

Redis基础知识学习笔记(二)

时间:2024-09-01 19:51:16浏览次数:13  
标签:Redis 数据库 redis 笔记 基础知识 value key test

文章目录

一.Redis安装

1.Windows 下安装

Github下载: https://github.com/tporadowski/redis/releases(推荐)

官网下载: https://redis.io/download(注意没有Windows版本的)

Windows下的.msi安装和.zip格式区别:

.msi是Windows installer开发出来的程序安装文件,它可以让你安装,修改,卸载你所安装的程序。说白了.msi就是Windows installer的数据包,把所有和安装文件相关的内容封装在一个包里。此外:它还包含有关安装过程自己的信息。例如:安装序列、目标文件夹路径、安装选项和控制安装过程的属性。
.zip是一个压缩包,解压之后即可,不需要安装

建议使用zip压缩包方式下载,如图:
20240901172300

一般解压缩到除C盘之外的盘即可,重命名为redis
20240901172751

在redis的安装目录下打开cmd窗口,运行:

1>资源管理器目录进入

20240901173049

2>目录进入命令:

cd 切换目录命令示例:

例:cd // 显示当前目录

例:cd … // 进入父目录

例:cd /d d: // 进入上次d盘所在的目录(或在直接输入:d:)

例:cd /d d:\ // 进入d盘根目录

例:cd d: // 显示上次d盘所在的目录

例:cd /d d:\src // 进入d:\src目录
redis-server.exe redis.windows.conf

20240901173215

默认端口为6379,出现图上的图标说明redis服务启动成功。命令里面的 redis.windows.conf 可以省略,省略后,使用redis-server.exe命令会使用默认的配置。出现这个即表示redis服务器启动成功了,切记不要关闭

以同样的方式在redis的安装目录下打开cmd,挨个运行:

使用redis-cli.exe命令来打开Redis客户端连接本地redis
redis-cli.exe -h 127.0.0.1 -p 6379

设置键值对:
set myKey abc

取出键值对:
get myKey

20240901173731

也可在客户端连接服务器之后使用ping命令查看是否连接成功,返回PONG则成功

3.配置环境变量

为了方便,建议把Redis路径配置到系统变量Path值中,这样就省得再输路径了。

我们把redis的安装路径复制到系统环境变量的path中即可,之后按ctrl+R进入cmd窗口即可直接运行redis命令

2.Linux 下安装

由于CentOs停止维护,我们以Ubuntu示例,本质流程都一个样

1> 安装redis

sudo apt update
sudo apt install redis-server

2> 启动redis

redis-server

3> 查看 redis 是否启动

redis-cli

如果终端打开以下内容,即表示安装成功:

redis 127.0.0.1:6379>

127.0.0.1 是本机 IP ,6379 是 redis 服务端口。
我们输入 PING 命令,返回PONG即表示安装成功

redis 127.0.0.1:6379> ping
PONG

二.Redis配置

本机使用Redis服务器的话可以挂vscode上使用

Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf(Windows 名为 redis.windows.conf)。

1. 查看配置

可以通过 CONFIG 命令查看或设置配置项。(记得打开redis服务器)
语法:

# 查询指定名为<CONFIG_SETTING_NAME>的配置项
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

# 查询配置文件中所有的配置项
CONFIG GET *

20240901175832

2. 编辑配置

你可以通过修改 redis.conf 文件或使用 CONFIG set 命令来修改配置。
语法:

# 修改指定名为<CONFIG_SETTING_NAME>的值改为<NEW_CONFIG_VALUE>
redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

3. 参数说明

redis.conf 配置项说明如下:

序号配置项说明
1daemonize noRedis 默认不是以守护进程的方式运行,可以通过该配置项修改,使用 yes 启用守护进程(Windows 不支持守护线程的配置为 no )
2pidfile /var/run/redis.pid当 Redis 以守护进程方式运行时,Redis 默认会把 pid 写入 /var/run/redis.pid 文件,可以通过 pidfile 指定(windows不支持哦)
3port 6379指定 Redis 监听端口,默认端口为 6379
4bind 127.0.0.1绑定的主机地址
5timeout 300当客户端闲置多长秒后关闭连接,如果指定为 0 ,表示关闭该功能
6loglevel notice指定日志记录级别,Redis 总共支持四个级别:debug、verbose、notice、warning,默认为 notice
7logfile stdout日志记录方式,默认为标准输出,如果配置 Redis 为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给 /dev/null
8databases 16设置数据库的数量,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id
9save 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
10rdbcompression yes指定存储至本地数据库时是否压缩数据,默认为 yes
11dbfilename dump.rdb指定本地数据库文件名,默认值为 dump.rdb
12dir ./指定本地数据库存放目录
13slaveof 设置当本机为 slave 服务时,设置 master 服务的 IP 地址及端口
14masterauth 当 master 服务设置了密码保护时,slave 服务连接 master 的密码
15requirepass foobared设置 Redis 连接密码
16maxclients 128设置同一时间最大客户端连接数,默认无限制
17maxmemory 指定 Redis 最大内存限制
18appendonly no指定是否在每次更新操作后进行日志记录
19appendfilename appendonly.aof指定更新日志文件名
20appendfsync everysec指定更新日志条件
21vm-enabled no指定是否启用虚拟内存机制
22vm-swap-file /tmp/redis.swap虚拟内存文件路径
23vm-max-memory 0将所有大于 vm-max-memory 的数据存入虚拟内存
24vm-page-size 32Redis swap 文件 page 大小
25vm-pages 134217728设置 swap 文件中的 page 数量
26vm-max-threads 4设置访问swap文件的线程数
27glueoutputbuf yes设置在向客户端应答时,是否把较小的包合并为一个包发送
28hash-max-zipmap-entries 64, hash-max-zipmap-value 512指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
29activerehashing yes指定是否激活重置哈希
30include /path/to/local.conf指定包含其它的配置文件

可视化工具我这里使用的DataGrip
20240901182527

三.Redis数据类型

Redis 主要支持以下几种数据类型:

类型特性
string(字符串)基本的数据存储单元,可以存储字符串、整数或者浮点数。
hash(哈希)一个键值对集合,可以存储多个字段。
list(列表)一个简单的列表,可以存储一系列的字符串元素。
set(集合)一个无序集合,可以存储不重复的字符串元素。
zset(sorted set:有序集合)类似于集合,但是每个元素都有一个分数(score)与之关联。
位图(Bitmaps)基于字符串类型,可以对每个位进行操作。
超日志(HyperLogLogs)用于基数统计,可以估算集合中的唯一元素数量。
地理空间(Geospatial)用于存储地理位置信息。
发布/订阅(Pub/Sub)一种消息通信模式,允许客户端订阅消息通道,并接收发布到该通道的消息。
流(Streams)用于消息队列和日志存储,支持消息的持久化和时间排序。
模块(Modules)Redis 支持动态加载模块,可以扩展 Redis 的功能。

注意:Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念。

Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。这与我们熟知的在一个关系数据库实例中可以创建多个数据库类似,所以可以将其中的每个字典都理解成一个独立的数据库。

每个数据库对外都是一个从0开始的递增数字命名,Redis默认支持16个数据库(可以通过配置文件支持更多,无上限),可以通过配置databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库,不过可以随时使用SELECT命令更换数据库

然而这些以数字命名的数据库又与我们理解的数据库有所区别。首先Redis不支持自定义数据库的名字,每个数据库都以编号命名,开发者必须自己记录哪些数据库存储了哪些数据。另外Redis也不支持为每个数据库设置不同的访问密码,所以一个客户端要么可以访问全部数据库,要么连一个数据库也没有权限访问。最重要的一点是多个数据库之间并不是完全隔离的,比如FLUSHALL命令可以清空一个Redis实例中所有数据库中的数据。综上所述,这些数据库更像是一种命名空间,而不适宜存储不同应用程序的数据。比如可以使用0号数据库存储某个应用生产环境中的数据,使用1号数据库存储测试环境中的数据,但不适宜使用0号数据库存储A应用的数据而使用1号数据库B应用的数据,不同的应用应该使用不同的Redis实例存储数据。由于Redis非常轻量级,一个空Redis实例占用的内存只有1M左右,所以不用担心多个Redis实例会额外占用很多内存。

1. String(字符串)

string 是 redis 最基本的数据类型,一个 key 对应一个 value,最大能存储 512MB。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据,比如jpg图片或者序列化的对象。

常用命令

命令作用
SET key value设置键的值
GET key获取键的值
INCR key将键的值加 1
DECR key将键的值减 1
APPEND key value将值追加到键的值之后

实例

set test "玛卡巴卡"
get test
incr test
decr test
append test "万岁!"

20240901182901
利用set创建了一个键为test,值为“玛卡巴卡”,get获取test的值,由于这里string值为中文,不能使用incr和decr,append增加值
20240901183315

2. Hash(哈希)

Redis hash 是一个键值(key=>value)对集合,类似于一个小型的 NoSQL 数据库。

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

每个哈希最多可以存储 2^32 - 1 个键值对。

常用命令

命令作用
HSET key field value设置哈希表中字段的值
HGET key field获取哈希表中字段的值
HGETALL key获取哈希表中所有字段和值
HDEL key field删除哈希表中的一个或多个字段

场景:存储、读取、修改用户属性

实例

首先删除前面的String类型的test或者使用另外的数据库,redis共有16个

-- 选择2号数据库
select 2

-- 删除test键
del test

运行:

hmset test field1 "Hello" field2 "World"
hget test field1
hgetall test
hdel test field1
hgetall test

实例中我们使用了hmset设置了两个 field=>value 对, hget 获取对应 field 对应的 value,hdel删除了field1,hgetall获取了test键的全部值
20240901184459

3. List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

列表最多可以存储 2^32 - 1 个元素。

常用命令

命令作用
LPUSH key value将值插入到列表头部
RPUSH key value将值插入到列表尾部
LPOP key移出并获取列表的第一个元素
RPOP key移出并获取列表的最后一个元素
LRANGE key start stop获取列表在指定范围内的元素

场景:1、最新消息排行等功能(比如朋友圈的时间线) 2、消息队列

实例

同理,这里我们先使用del命令删除test键

del test

lpush test redis
lpush test mongodb
lpush test rabbitmq
lrange test 0 10
rpush test java
lrange test 0 10
lpop test
rpop test
lrange test 0 10

20240901185930

4. Set(集合)

Redis 的 Set 是 string 类型的无序集合。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

常用命令

命令作用
SADD key value向集合添加一个或多个成员,添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0。
SREM key value移除集合中的一个或多个成员
SMEMBERS key返回集合中的所有成员
SISMEMBER key value判断值是否是集合的成员

场景:1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐

实例

同理,这里我们先使用del命令删除test键

del test

sadd test redis
sadd test mongodb
sadd test rabbitmq
smembers test
sadd test rabbitmq
smembers test
srem test rabbitmq
sismember test rabbitmq

20240901190303
注意:以上实例中 rabbitmq 添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。

5. zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

常用命令

命令作用
ZADD key score value向有序集合添加一个或多个成员,或更新已存在成员的分数
ZRANGE key start stop [WITHSCORES]返回指定范围内的成员
ZREM key value移除有序集合中的一个或多个成员
ZSCORE key value返回有序集合中,成员的分数值

场景:1、排行榜 2、带权重的消息队列

实例

同理,这里我们先使用del命令删除test键

del test
zadd test 0 redis
zadd test 0 mongdb
zadd test 0 rabbitmq
zadd test 1 rabbitmq
zrange test 0 1000
zrem test redis
zscore test rabbitmq

20240901190659

6. HyperLogLog

  1. 用于基数估计算法的数据结构。
  2. 常用于统计唯一值的近似值。

7. Bitmaps

  1. 位数组,可以对字符串进行位操作。
  2. 常用于实现布隆过滤器等位操作。

8. Geospatial Indexes

处理地理空间数据,支持地理空间索引和半径查询。

9. Streams

  1. 日志数据类型,支持时间序列数据。
  2. 用于消息队列和实时数据处理。

标签:Redis,数据库,redis,笔记,基础知识,value,key,test
From: https://blog.csdn.net/qq_73340809/article/details/141788326

相关文章

  • Redis组件介绍(四)
    写在前面今天继续学习后面的知识。Redis操作命令操作List相关APILPUSH说明:将某个值加入到一个key列表的头部。当列表不存在时会创建。语法:LPUSHkeyvalue[value...]返回值:成功返回列表的元素个数,失败返回0。LPUSHX说明:与LPUSH类似,但必须保证......
  • Datawhale X 李宏毅苹果书 AI夏令营 深度学习入门笔记02
    目录一、学习资料二、学习笔记(一)线性模型1、考虑周期性2、修改模型(二)模型变形之分段线性曲线1、分段线性直线2、分段线性曲线的图像和表达式(机器学习第一步:写出带有未知数的函数)(1)如何构成(2)如何表达(3)如何改进3、分段线性曲线的损失(机器学习第二步:定义损失)4、分段......
  • Datawhale X 李宏毅苹果书 AI夏令营 深度学习进阶笔记02
    目录一、学习资料二、学习笔记(一)自适应学习率(adaptivelearningrate)1、什么是+为什么要用2、三种自适应学习率方法(1)AdaGrad(AdaptiveGradient)(2)RMSprop(RootMeanSquaredpropagation)(3)Adam(Adaptivemomentestimation)(二)学习率调度(learningratescheduling)1、为什么......
  • 读书笔记(11)《瓦尔登湖》
    序言这是一本由美国作家梭罗独居瓦尔登湖畔的记录,描绘了他两年多时间里的所见、所闻和所思。在这本书中,梭罗通过建造木屋的过程,对农场的向往和购买经历,以及对生活的理解和追求,向我们展示了他的生活态度和价值观。梭罗在书中表达了对阅读的重要性的深刻理解,他认为阅读可以帮助我......
  • 学习笔记 ---- 基环树
    目录算法解析基环树与基环森林模板例题[NOIP2018提高组]旅行[ZJOI2008]骑士[IOI2008]IslandLongWaytobeNon-decreasing算法解析基环树与基环森林基环树是指有且仅有一个环的树。基环森林是指若干棵基环树构成的森林。对于有向图,基环树可分为内向基环树和外向基环......
  • STM32笔记(10)——USART
    USART(UniversalSynchronous/AsynchronousReceiver/Transmitter)通用同步/异步收发器USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里自带波特率发生......
  • 【网络基础知识】判断证书私钥格式
    原创小何运维笔记要判断证书私钥的格式,可以采取以下步骤:查看文件扩展名:文件扩展名可以提供一些线索:.pem:PEM格式,通常是Base64编码的,可以包含多种类型的密钥或证书。.key:通常是私钥文件,可能是PEM或其他格式。.der:DER格式,通常是二进制编码,不易用文本编辑器直接查看。.pfx......
  • FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
    ​自从互联网普及之后,用于视频直播的流媒体技术就发展起来。这几十年中,比较有影响的主要有MMS、RTSP、RTMP、HLS、SRT、RIST几种,分别介绍如下。1、MMS协议MMS全称MicrosoftMultimediaServer,意思是微软多媒体服务器,它是微软公司在上世纪九十年代发布的多媒体服务器解决方案,可用......
  • 嵌入式全栈开发学习笔记---Linux网络编程(面试/开发重点)
    目录网络概述Linux网络基础网络模型TCP/IP协议族体系结构数据封装TCP协议TCP协议头部结构TCP三次握手TCP四次挥手UDP协议UDP协议头部结构套接字Socket端口号和IP地址地址转换字节序转换TCP服务器服务器建立步骤第一步,创建socket--socket()第二步,绑定信息Bin......
  • 机械学习—零基础学习日志(概率论总笔记1)
    概率论的起源在历史上有明确记载的最早研究随机性的数学家是帕斯卡和费马。帕斯卡就是最早发明机械计算机的那位数学家,他并不是赌徒,但是他有些赌徒朋友,那些人常常玩一种掷骰子游戏,游戏规则是由玩家连续掷4次骰子,如果其中没有6点出现,玩家赢,如果出现一次6点,则庄家赢。在这个赌......