首页 > 数据库 >入门 Redis 基础知识

入门 Redis 基础知识

时间:2024-04-22 10:22:24浏览次数:27  
标签:入门 Redis 可以 redis 基础知识 命令 设置 集合

目录

1. Redis 简介与特点

  • 1.1.Redis 是什么?
  • 1.2.为什么选择 Redis?

2. Redis 数据结构与基本操作

  • 2.1.字符串(Strings)
  • 2.2.列表(Lists)
  • 2.3.集合(Sets)
  • 2.4.哈希表(Hashes)
  • 2.5.有序集合(Sorted Sets)
  • 2.6.基本操作示例

3.Redis 安装与配置

  • 3.1.安装 Redis
  • 3.2.配置 Redis

 

1. Redis 简介与特点

1.1.Redis 是什么?

当谈到Redis时,我喜欢把它比作你电脑里的超级记事本,但这个记事本可不是普通的!它可以储存各种各样的数据,并且以惊人的速度进行操作。

想象一下,你去了一家新开的餐厅。服务员迅速记录下了你的点餐信息,然后瞬间就把订单传给了厨房。Redis就像是这位神速服务员,可以快速地把你的数据储存起来,并在你需要的时候立刻拿出来使用。

那Redis和其他的数据库有什么不同呢?嗯,它的速度是一个显著的区别!你可以把Redis想象成一个跑得飞快的赛车,而其他数据库则像是普通的家用车。Redis可以在几乎瞬间完成各种数据操作,这对于需要高速响应的互联网应用来说是非常重要的。

此外,Redis还有一个很酷的特性,就是它的灵活性。它支持多种数据类型,比如字符串、列表、哈希、集合等等。这就好比你的超级记事本上有各种各样的标签和分类,你可以随时根据需要来整理和查找你的数据。

最后,Redis还具有持久化的功能,这意味着即使你关闭了电脑,你的数据也不会丢失。就像是你把重要的文件存放在云端一样,你可以随时找回你之前存储的数据。

总之,Redis就像是一位快速、灵活、可靠的数据管家,可以帮助你轻松管理和操作各种数据。不管是在互联网应用、电子商务还是游戏开发中,Redis都能发挥重要作用,成为你数据处理的得力助手!

 

1.2.为什么选择 Redis?

1.2.1. 速度飞快

Redis就像是一辆疾驰的赛车,可以在几乎瞬间完成各种数据操作。不管是存储数据、读取数据还是更新数据,Redis都能够以惊人的速度完成。这意味着无论你的应用有多大的流量,都能够保证用户能够快速地获取到数据,让你的应用变得更加高效迅速。

1.2.2. 灵活多样的数据结构支持

Redis支持多种数据结构,包括字符串、列表、哈希、集合等等。这就好比是你的工具箱,无论你需要什么样的工具,Redis都能够提供给你。这意味着你可以根据实际需求选择合适的数据结构,让你的数据存储更加灵活多样。

1.2.3. 高可用性和可扩展性

Redis支持主从复制和集群模式,可以保证你的数据始终可用,并且能够轻松应对大规模数据的存储和处理需求。无论你的应用规模有多大,Redis都能够为你提供稳定可靠的服务,让你的数据始终安全可靠。

1.2.4. 持久化功能

虽然Redis是一个内存数据库,但它可以通过持久化机制将数据保存到磁盘上,以防止数据丢失。这意味着即使你关闭了服务器,你的数据仍然安全可靠,可以随时恢复使用。

 

2. Redis 数据结构与基本操作 

2.1.字符串(Strings)

2.1.1. Redis字符串简介

在Redis里,字符串就像是一个盒子,你可以往里面放任何东西——文字、数字、甚至是一小段代码。每个盒子都有一个名字,我们称之为“键”,通过这个名字,你可以轻松找到并获取盒子里的内容。

2.1.2. 字符串的基本操作

2.1.2.1 设置字符串值

想象一下,你要把一句话放进一个盒子里。在Redis中,你可以使用SET命令来完成这个操作:

SET mykey "Hello Redis!"

这个命令就像是在一个盒子上贴上了一个标签(键),并把你要放进去的内容(值)放了进去。

2.1.2.2 获取字符串值

当你需要查看盒子里的内容时,你可以使用GET命令:

GET mykey

这个命令会告诉Redis:“嘿,我想看一下叫做mykey的盒子里的东西是什么”,然后Redis会把盒子里的内容拿给你。

2.1.2.3 追加字符串值

如果你想在盒子里追加一些内容,可以使用APPEND命令:

APPEND mykey " Welcome to Redis!"

这个命令就像是给盒子里的内容后面再贴上一张小便签,上面写着“Welcome to Redis!”。

2.1.2.4 获取字符串长度

想知道盒子里的东西有多长吗?用STRLEN命令:

STRLEN mykey

这个命令会告诉你盒子里的内容长度是多少。

2.1.2..5 替换字符串值

如果你想把盒子里的东西换成别的东西,可以使用SET命令:

SET mykey "New Value"

这个命令就像是把盒子里的东西换成了“New Value”。

Redis的字符串数据结构虽然简单,但却是Redis中非常重要的一部分。通过掌握基本的字符串操作命令,你可以轻松地在Redis中存储、获取、修改字符串值,实现各种数据处理需求

 

2.2.列表(Lists)

2.2.1. Redis列表简介

在Redis中,列表就像是一个有序的队列,你可以向队尾添加元素,也可以从队头或队尾弹出元素。这就好像是排队等待购买电影票一样,先进先出,非常有序

2.2.2. 列表的基本操作

2.2.2.1 向列表添加元素

想象一下,你在排队等待购买电影票,每个人都是一个元素,你可以使用LPUSH或RPUSH命令向队列的左侧或右侧添加元素:

LPUSH mylist "Alice"
RPUSH mylist "Bob"

这个命令就像是在队列的左侧或右侧添加了一个新的人。

2.2.2.2 从列表弹出元素

当你购买了电影票后,就可以从队列中移除你自己,你可以使用LPOP或RPOP命令从队列的左侧或右侧弹出元素:

LPOP mylist
RPOP mylist

这个命令就像是你排到了前面,然后走出了队列,等待观影。

2.2.2.3 获取列表长度

想知道队列里有多少人吗?用LLEN命令:

LLEN mylist

这个命令会告诉你队列里的人数。

2.2.2.4 获取列表范围

有时候你可能只想查看队列中的一部分人,可以使用LRANGE命令:

LRANGE mylist 0 2

这个命令会告诉你队列中索引从0到2的人的名字。

2.2.2.5 移除列表中的元素

如果某个人不想看电影了,可以使用LREM命令将他移出队列:

LREM mylist 0 "Alice"

这个命令会将队列中所有名字为Alice的人都移除。

Redis的列表数据结构是一种非常有用的数据类型,它可以帮助你轻松地管理数据序列,实现各种复杂的数据操作。通过掌握基本的列表操作命令,你可以在Redis中灵活地添加、弹出、获取和移除元素,让你的应用变得更加灵活和高效

 

2.3.集合(Sets)

2.3.1. Redis集合简介

在Redis中,集合就像是一个装满独一无二物品的盒子,里面的物品不会重复,而且你可以对这些物品进行各种集合运算。这就好像是你的玩具盒里放了一堆不同的玩具,每个玩具都是独一无二的。

2.3.2. 集合的基本操作

2.3.2.1 向集合添加元素

想象一下,你的玩具盒里有一个新的玩具,你可以使用SADD命令将它添加到集合中:

SADD myset "toy1"
SADD myset "toy2"

这个命令就像是把新的玩具放进了你的玩具盒里。

2.3.2.2 从集合移除元素

如果你不再喜欢某个玩具了,可以使用SREM命令将它从集合中移除:

SREM myset "toy1"

这个命令就像是把你不喜欢的玩具扔掉一样。

2.3.2.3 检查元素是否存在于集合中

你可以使用SISMEMBER命令检查某个元素是否存在于集合中:

SISMEMBER myset "toy2"

这个命令会告诉你,玩具盒里是否有名为"toy2"的玩具。

2.3.2.4 获取集合中的元素数量

你可以使用SCARD命令获取集合中元素的数量:

SCARD myset

这个命令会告诉你玩具盒里有多少个玩具。

2.3.2.5 获取集合中的所有元素

如果你想查看玩具盒里的所有玩具,可以使用SMEMBERS命令:

SMEMBERS myset

这个命令会列出所有玩具的名字。

Redis的集合数据结构是一种非常有用的数据类型,它可以帮助你轻松地管理数据集合,并进行各种有趣的集合运算。通过掌握基本的集合操作命令,你可以在Redis中轻松地添加、移除、检查元素,甚至进行集合运算,让你的应用变得更加灵活和高效。

 

2.4.哈希表(Hashes)

2.4.1. Redis哈希表简介

在Redis中,哈希表就像是一个大文件柜,里面可以存放各种文件夹和文件。每个文件夹都有一个名字,而每个文件夹里又可以存放多个文件,每个文件都有一个名字和内容。这样一来,你可以通过文件夹的名字快速找到对应的文件,非常方便。

2.4.2. 哈希表的基本操作

2.4.2.1 设置哈希表的字段和值

想象一下,你要创建一个文件夹,并在其中放入一些文件。在Redis中,你可以使用HSET命令设置哈希表的字段和值:

HSET myhash field1 "value1"
HSET myhash field2 "value2"

这个命令就像是在文件柜中创建了一个文件夹myhash,并在其中放入了两个文件,分别是field1和field2,它们的内容分别是"value1"和"value2"。

2.4.2.2 获取哈希表的值

当你想要查看某个文件夹里的文件内容时,可以使用HGET命令:

HGET myhash field1

这个命令会告诉你文件夹myhash中名为field1的文件的内容是什么。

2.4.2.3 删除哈希表的字段

如果你想要删除某个文件夹里的文件,可以使用HDEL命令:

HDEL myhash field1

这个命令会将文件夹myhash中名为field1的文件删除掉。

2.4.2.4 获取哈希表的字段数量

想知道某个文件夹里有多少个文件吗?可以使用HLEN命令:

HLEN myhash

这个命令会告诉你文件夹myhash中文件的数量。

2.4.2.5 获取哈希表的所有字段和值

有时候你可能想查看某个文件夹里的所有文件和它们的内容,可以使用HGETALL命令:

HGETALL myhash

这个命令会列出文件夹myhash中所有文件和它们的内容。

Redis的哈希表数据结构是一种非常实用的数据类型,它可以帮助你轻松地管理复杂的数据,并以一种简单易懂的方式进行各种基本操作。

 

2.5.有序集合(Sorted Sets)

2.5.1. Redis有序集合简介

在Redis中,有序集合就像是一个有序的列表每个成员都有一个分数,根据分数的大小对成员进行排序。这就好像是一个排行榜,每个人都有一个分数,根据分数高低来排名。有序集合既可以保持数据的有序性,又可以实现快速的插入、删除和查找操作,非常方便。

2.5.2. 有序集合的基本操作

2.5.2.1 添加成员及其分数

想象一下,你要向一个排行榜中添加一位选手及其得分。在Redis中,你可以使用ZADD命令添加成员及其分数:

ZADD myset 100 "player1"
ZADD myset 90 "player2"

这个命令就像是向排行榜中添加了两位选手,分别是player1和player2,他们的得分分别是100和90。

2.5.2.2 获取成员的排名

当你想知道某位选手在排行榜中的排名时,可以使用ZRANK命令:

ZRANK myset "player1"

这个命令会告诉你player1在排行榜中的排名是第几名。

2.5.2.3 获取成员的分数

想知道某位选手的得分是多少吗?可以使用ZSCORE命令:

ZSCORE myset "player1"

这个命令会告诉你player1的得分是多少。

2.5.2.4 获取指定排名范围的成员

有时候你可能想获取排行榜中某个排名范围的成员列表,可以使用ZRANGE命令:

ZRANGE myset 0 2

这个命令会告诉你排行榜中排名从0到2的选手是谁。

2.5.2.5 移除成员

如果某个选手退出比赛了,你可以使用ZREM命令将他从排行榜中移除:

ZREM myset "player1"

这个命令会将排行榜中的player1移除掉。

Redis的有序集合数据结构是一种非常实用的数据类型,它可以帮助你轻松地存储数据,并以一种简单易懂的方式对数据进行排序和检索。

 

2.6.基本操作示例

2.6.1. 设置键值对

在Redis中,可以通过SET命令设置键值对,示例代码如下:

SET mykey "Hello Redis!"

这条命令表示将键为mykey的值设置为字符串"Hello Redis!"。在Redis中,键值对就像是字典中的条目,你可以通过键来快速找到对应的值。

2.6.2. 获取值

要获取键对应的值,可以使用GET命令,示例代码如下:

GET mykey

这条命令会返回键为mykey的值,如果该键不存在,则返回nil。在实际应用中,获取值是非常常见的操作,比如获取用户的会话信息、缓存的数据等。

2.6.3. 设置过期时间

在Redis中,可以给键设置过期时间,示例代码如下:

SET mykey "Hello Redis!" EX 3600

这条命令表示将键为mykey的值设置为字符串"Hello Redis!",并设置过期时间为3600秒(即1小时)。过期时间到达后,Redis会自动删除该键值对,这在缓存等场景下非常有用。

2.6.4. 删除键值对

如果不再需要某个键值对,可以使用DEL命令将其删除,示例代码如下:

DEL mykey

这条命令会将键为mykey的键值对从Redis中删除。在应用中,及时清理不再需要的数据是很重要的,可以避免占用过多的内存空间。

2.6.5. 判断键是否存在

有时候需要判断某个键是否存在,可以使用EXISTS命令,示例代码如下:

EXISTS mykey

这条命令会返回键为mykey的键值对是否存在的布尔值(0表示不存在,1表示存在)。在一些场景下,需要根据键的存在与否来决定后续的操作。

Redis中基本操作的常见示例,包括设置键值对、获取值、设置过期时间、删除键值对和判断键是否存在等操作。掌握了这些基本操作,你就可以轻松地在Redis中进行数据存储、检索和管理,实现各种应用场景下的需求。希望本文能够帮助你快速入门Redis,并在实际应用中发挥作用!

redis文档参考手册:

Redis 标准文档:https://redis.io/docs/latest/commands/

Redis 教程 - runoob.com:https://www.runoob.com/redis/redis-tutorial.html

Redis 设计与实现:https://redisbook.com/

 

3.Redis 安装与配置

3.1.安装 Redis

3.1.1.Windos环境安装

参考:https://www.jianshu.com/p/7f5ecfc388a0,文章主要还是介绍linux环境下的安装

3.1.2.Linux环境安装

首先,确保你的电脑上已经安装了Docker和Docker Compose(后续新文章的环境搭建都是建立在Docker环境之上,这个过程就不再重复解释了)。如果还没有安装,可以参考往期 Mysql入门指南篇安装说明,你也可以在Docker的官方网站(https://docs.docker.com/get-docker/)找到安装指南。安装完成后,你就可以在命令行中使用Docker和Docker Compose了。

3.1.2.1. 准备Docker Compose文件和Redis配置文件

首先,在项目目录中创建一个名为docker-compose.yml的文件,并创建一个名为redis.conf的Redis配置文件。然后,向docker-compose.yml文件添加以下内容:

version: '3.8'
services:
  redis:
    image: redis:latest
    ports:
      - "6379:6379"
    volumes:
      - ./redis.conf:/usr/local/etc/redis/redis.conf  # 将本地的redis.conf文件挂载到容器内部
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]  # 指定启动Redis时使用的配置文件
    networks:
      - redis_network

networks:
  redis_network:

3.1.2.2. 配置redis.conf文件

打开redis.conf文件,在其中添加以下配置内容:

# 设置监听端口
port 6379
# 设置日志级别
loglevel notice
# 设置日志文件路径
logfile stdout
# 设置密码,如果不需要密码可以注释掉下面一行
requirepass your_password
# 设置最大内存使用量
maxmemory 1gb
# 设置内存使用达到最大值后的处理策略
maxmemory-policy allkeys-lru
# 设置数据持久化方式,如果不需要持久化可以注释掉下面一行
save 900 1

在配置文件中,你可以根据自己的需求来设置Redis的各种参数,比如监听端口、日志级别、最大内存使用量等。

3.1.2.3. 启动Redis服务

保存好docker-compose.yml和redis.conf文件后,打开终端,进入到包含这两个文件的目录中。然后,运行以下命令启动Redis服务:

docker-compose up -d

这个命令会根据docker-compose.yml文件的描述启动Redis服务,并根据redis.conf文件的配置进行Redis服务器的初始化。

3.1.2.4. 验证Redis服务是否正常运行

使用以下命令可以验证Redis服务是否正常运行:

docker-compose ps

如果一切顺利,你会看到redis服务正在运行的信息。

3.1.2.5. 连接到Redis服务器

你可以使用任何支持Redis协议的客户端工具(如RedisDesktopManager、Redis-CLI)连接到Redis服务器。使用以下命令连接到Redis服务器:

docker-compose exec redis redis-cli

现在,你已经成功连接到了Redis服务器。

 

3.2.配置 Redis

3.2.1. 配置监听端口

Redis默认监听端口为6379,但你也可以根据需要进行更改。在配置文件中找到以下行:

port 6379

将端口号改为你想要的端口号即可。

3.2.2. 设置密码保护

为了提高安全性,你可以设置密码来保护你的Redis服务器。在配置文件中找到以下行:

# requirepass your_password

去掉行首的注释符号“#”,并将“your_password”替换为你想要设置的密码。

3.2.3. 设置数据持久化方式

Redis支持将数据持久化到磁盘,以防止数据丢失。你可以选择使用RDB快照或AOF日志文件,或者两者同时使用。在配置文件中找到以下行:

# save 900 1

去掉行首的注释符号“#”,即可开启RDB持久化。你也可以添加多个save配置来设置不同的持久化策略。

3.2.4. 设置最大内存使用量

为了避免Redis占用过多内存导致系统崩溃,你可以设置Redis的最大内存使用量。在配置文件中找到以下行:

# maxmemory 1gb

去掉行首的注释符号“#”,并将内存大小改为你想要的值,比如“1gb”。

3.2.5. 其他配置选项

除了上述常用配置外,Redis还提供了许多其他配置选项,如日志级别、最大连接数、超时设置、持久化方式、内存优化等。根据你的实际需求进行调整。

  • 日志级别:可以通过设置日志级别来控制Redis记录日志的详细程度。日志级别从低到高依次为debug、verbose、notice、warning和critical。根据你的需求,选择合适的日志级别以便于调试和监控Redis服务器的运行状态。

  • 最大连接数:Redis默认允许的最大连接数为10000,你可以根据实际情况来调整这个值。如果你的应用需要处理大量的并发请求,可以适当增加最大连接数以提高性能。

  • 超时设置:Redis提供了多种超时设置,包括客户端超时、命令执行超时和连接超时等。通过设置合适的超时时间,可以防止客户端长时间占用服务器资源或者避免因网络故障导致的阻塞。

  • 持久化方式:除了RDB快照和AOF日志文件外,Redis还支持多种持久化方式,如RDB+AOF混合模式、每秒同步等。根据你的需求和对数据持久化的要求,选择合适的持久化方式。

  • 内存优化:Redis提供了一些内存优化的配置选项,如内存碎片整理、内存分配策略等。通过调整这些选项,可以使Redis更加高效地利用内存,提升性能和稳定性。

3.2.6. 保存并重启Redis

完成配置后,保存配置文件并重启Redis服务器,使配置生效。在命令行中执行以下命令:

  • Linux平台:
docker restart redis
  • Windows平台:
redis-server --service-start

3.2.7. 验证配置是否生效

可以使用redis-cli工具连接到Redis服务器,并通过命令检查配置是否生效,比如检查监听端口、验证密码等。

 

           

标签:入门,Redis,可以,redis,基础知识,命令,设置,集合
From: https://www.cnblogs.com/hxjcore/p/18145802

相关文章

  • docker harbor-入门指南
    一、Harbor介绍1.介绍Harbor是一个开源注册表,它使用策略和基于角色的访问控制来保护工件,确保图像被扫描且没有漏洞,并将图像签名为受信任。Harbor是CNCF毕业项目,可提供合规性、性能和互操作性,帮助您跨云原生计算平台(如Kubernetes和Docker)一致、安全地管理工件。2.官......
  • Java入门
    Java入门helloworld新建一个文件夹,将要把写的代码放在里面打开文件夹,右键新建一个.txt,将后缀改为.java,为之命名。例如:Hello.java右键文件,选择用notepad++打开文件在notepad++编写代码publicclassHello{ publicstaticvoidmain(String[]args) { System.out......
  • MySql入门操作 3.0
    子查询:在查询列中设定特定信息,筛选要的特殊信息: 标量子查询:在内部的select中设定具体常量,通过常量进行筛选对应的列;具体格式不太好描述,如果对于上一章所使用的指令可以熟练应用那么这里应该也没啥问题,就是一个嵌套类比罢了下面直接给示例:相当于在要设定的条件中再使用一......
  • 储能行业入门
    过年回家,亲朋好友问起现在在做什么。答:储能。又问:储能是什么?沉思半晌,表达能力本就欠佳的我难以用几句话来概括。偶然进入储能行业工作半年,对其仍是不甚了解,遂决定继续在秋招时就停下的写博客的习惯,记录自己的工作总结和对行业、岗位的理解。一、储能释义打开chatgpt,问什么是......
  • (复习)树上启发式合并(dsu on tree)入门U41492树上数颜色
    主要思想是树的重轻儿子之分使得时间复杂度为o(nlogn),神奇欲深入了解的这里:https://oi-wiki.org/graph/dsu-on-tree/点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedefstructedge//边结构体{intto,next;}EDGE;//边相关数组EDGEe[100001<<1];......
  • 树状数组入门
    树状数组下标记得是从1开始,本节点id通过加lowbit可以访问到父节点的id,用于点修。本节点id减去lowbit则是查看左边第一个比自己高一级的节点id,比如7会查到6,6会查到4,这样子累加此三个的值就可以得到前七个的前缀和。inttreeArr[M]={0};//startfrom1intlowbit(intx){......
  • jfinal enjoy模板入门
    用途用于渲染需要多次重复的sql以及程序代码入门示例取自文件importcom.jfinal.template.Engine;importcom.jfinal.template.Template;importjava.util.HashMap;importjava.util.Map;publicclassEnjoyTemplateDemo{publicstaticvoidmain(String[]args)......
  • Kubernetes 入门、简介、架构、应用场景
    概述Kubernetes是一个开源的容器编排平台,它提供了一种方便管理和部署容器化应用程序的方式。下面是Kubernetes的入门、简介和架构。Kubernetes是一种用于自动部署、扩展和管理容器化应用程序的开源平台。它最初由Google开发,并在2014年开源发布,现已成为CNCF(CloudNativeCom......
  • kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ consumer实战
    1、上一节课我们学习了MQTTproducer生产者步骤,MQTTconsumer消费者步骤。该步骤可以从支持MRQTT协议的中间件获取数据,该步骤和kafkaconsumer一样可以处理实时数据交互,如下图所示: 2、双击步骤打开MQTTconsumer配置窗口,如下图所示:Stepname:自定义步骤名称。Transformat......
  • kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ producer 实战
    1、MQTT介绍MQTT(MessageQueuingTelemetryTransport)是一种轻量级的消息传输协议,设计用于连接低带宽、高延迟或不可靠网络的设备。MQTT是基于发布/订阅模式(Publish/Subscribe)的协议,其中设备可以发布消息到一个主题(Topic),其他设备可以订阅这个主题以接收相关消息。这种模式......