Redis新手教程

Redis新手教程

目录

  1. 什么是Redis
  2. Redis的安装
    1. 安装前准备
    2. 安装步骤
  3. Redis的基本数据类型
    1. 字符串
    2. 哈希
    3. 列表
    4. 集合
    5. 有序集合
  4. Redis的持久化
    1. 快照
    2. AOF
  5. Redis的高可用性
    1. 主从复制
    2. Redis Sentinel
    3. Redis Cluster
  6. Redis的使用场景
  7. Redis的优缺点
  8. 总结

1. 什么是Redis

Redis(Remote Dictionary Server)是一个开源(BSD许可)的内存数据结构存储,用作数据库、缓存和消息代理。它支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)与范围查询(range queries)、bitmaps、hyperloglogs和地理空间(geospatial)索引与流(streams)。Redis内置了复制(replication)、Lua脚本(Lua scripting)、LRU驱动事件(LRU eviction)、事务(transactions)和不同级别的磁盘持久化(persistence),并通过Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(HA)。

2. Redis的安装

2.1 安装前准备

在安装Redis之前,请确保你的系统已经安装了以下软件:

  • GCC(编译器):用于编译Redis的源代码
  • Make(构建工具):用于构建Redis

可以通过以下命令安装这些工具:

sudo apt-get update
sudo apt-get install build-essential

2.2 安装步骤

  1. 下载Redis的最新稳定版:
wget http://download.redis.io/redis-stable.tar.gz
  1. 解压下载的文件:
tar xvzf redis-stable.tar.gz
  1. 进入解压后的目录并编译:
cd redis-stable
make
  1. 安装Redis:
sudo make install
  1. 启动Redis服务器:
redis-server
  1. 使用Redis客户端连接到服务器:
redis-cli

3. Redis的基本数据类型

3.1 字符串

字符串是Redis中最基本的数据类型,一个键最大可以存储512MB的值。常用的命令有:

  • SET key value:设置指定键的值。
  • GET key:获取指定键的值。
  • INCR key:将指定键的值加1。
  • DECR key:将指定键的值减1。

3.2 哈希

哈希是一个键值对集合,适用于存储对象。常用的命令有:

  • HSET key field value:为哈希表中的字段设置值。
  • HGET key field:获取哈希表中指定字段的值。
  • HDEL key field:删除哈希表中的一个或多个字段。
  • HGETALL key:获取在哈希表中指定键的所有字段和值。

3.3 列表

列表是一个有序的字符串集合,常用的命令有:

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

3.4 集合

集合是一个无序的字符串集合,常用的命令有:

  • SADD key member:向集合添加一个或多个成员。
  • SREM key member:移除集合中的一个或多个成员。
  • SMEMBERS key:返回集合中的所有成员。
  • SISMEMBER key member:判断成员是否在集合中。

3.5 有序集合

有序集合和集合类似,但每个元素都会关联一个分数,Redis通过分数来为集合中的成员进行从小到大的排序。常用的命令有:

  • ZADD key score member:向有序集合添加一个成员,并设置分数。
  • ZRANGE key start stop [WITHSCORES]:返回指定区间内的成员,按分数排序。
  • ZREM key member:移除有序集合中的一个或多个成员。

4. Redis的持久化

4.1 快照

快照是Redis默认的持久化方式,会将数据集快照保存到磁盘。配置如下:

save 900 1
save 300 10
save 60 10000

以上配置表示:

  • 如果900秒内至少有1个键被修改,则保存数据快照。
  • 如果300秒内至少有10个键被修改,则保存数据快照。
  • 如果60秒内至少有10000个键被修改,则保存数据快照。

4.2 AOF

AOF(Append Only File)是另一种持久化方式,通过记录每个写操作的日志来实现。配置如下:

appendonly yes
appendfilename "appendonly.aof"

可以通过以下命令重写AOF文件以减少文件大小:

bgrewriteaof

5. Redis的高可用性

5.1 主从复制

Redis支持主从复制,可以通过以下命令配置从节点:

replicaof <masterip> <masterport>

5.2 Redis Sentinel

Redis Sentinel用于监控Redis主从实例,提供自动故障转移。配置示例如下:

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

5.3 Redis Cluster

Redis Cluster提供分片功能,将数据分布在多个节点上,并提供高可用性。配置步骤如下:

  1. 编辑每个节点的配置文件,启用集群模式:
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
  1. 启动每个节点,然后使用以下命令创建集群:
redis-cli --cluster create <node1>:<port1> <node2>:<port2> <node3>:<port3> --cluster-replicas 1

6. Redis的使用场景

Redis常用于以下场景:

  • 缓存:减少数据库负载,提高响应速度。
  • 消息队列:通过列表(list)实现简单的消息队列。
  • 会话存储:将会话数据存储在Redis中,提高访问速度。
  • 实时统计:利用有序集合进行实时数据统计。
  • 分布式锁:通过SETNX命令实现分布式锁。

7. Redis的优缺点

优点

  • 性能高:所有数据存储在内存中,读写速度非常快。
  • 支持丰富的数据类型:字符串、哈希、列表、集合、有序集合等。
  • 支持持久化:可以将数据保存到磁盘中,防止数据丢失。
  • 支持主从复制和集群:提供高可用性和扩展性。

缺点

  • 内存消耗大:数据全部存储在内存中,对内存要求高。
  • 单线程:Redis主要使用单线程处理请求,在多核CPU上无法充分利用所有资源。

8. 总结

Redis作为一种高性能的内存数据结构存储,广泛应用于缓存、消息队列、会话存储等场景。通过合理配置和使用Redis的持久化、高可用性特性,可以显著提高系统的响应速度和可靠性。希望本文对Redis的基本概念和使用方法有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/867675.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

介绍东芝TB62262FTAG芯片:高性能两相双极步进电机驱动器

在当今快速发展的科技领域&#xff0c;高性能的电机驱动器对于许多工程项目来说至关重要。东芝的TB62262FTAG这款两相双极步进电机驱动器采用PWM斩波技术&#xff0c;集成了多个先进功能&#xff0c;适用于各种工业和消费类应用。本文将详细介绍TB62262FTAG的参数、性能、优势及…

《向量数据库指南》——Milvus Cloud检索器增强的深度探讨:句子窗口检索与元数据过滤

检索器增强的深度探讨&#xff1a;句子窗口检索与元数据过滤 在信息爆炸的时代&#xff0c;高效的检索系统成为了连接用户与海量数据的关键桥梁。为了进一步提升检索的准确性和用户满意度&#xff0c;检索器增强技术应运而生&#xff0c;其中句子窗口检索与元数据过滤作为两大…

【Qt】day3 自定义控件、框架、定时器、QPainter、QFile

文章目录 自定义控件封装自定义框架定时器第一种方式第二种方式 &#xff08;推荐&#xff09; 事件分发器QPainter基本操作高级设置抗锯齿移动坐标原点 画家画资源图片&#xff0c;并实现手动移动 作业QPaintDevice绘图设备QPixmapQimageQPicture QFile文件读写操作QFileInfo文…

移动校园(3):处理全校课程数据excel文档,实现空闲教室查询与课程表查询

首先打开教学平台 然后导出为excel文档 import mathimport pandas as pd import pymssql serverName 127.0.0.1 userName sa passWord 123456 databaseuniSchool conn pymssql.connect(serverserverName,useruserName,passwordpassWord,databasedatabase) cursor conn.cur…

昇思11天

基于 MindSpore 实现 BERT 对话情绪识别 BERT模型概述 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是由Google于2018年开发并发布的一种新型语言模型。BERT在许多自然语言处理&#xff08;NLP&#xff09;任务中发挥着重要作用&am…

【C++】map和set详解

目录 1. 关联式容器 2. 键值对pair 3. 树形结构的关联式容器 4. set 4.1 set的介绍 4.2 set的构造 4.3 set的迭代器 4.4 set的容量 4.5 set的常用函数 5. multiset 6. map 6.1 map的介绍 6.2 map的构造 6.3 map的迭代器 6.4 map的容量 6.5 map的operator[] 6.6…

【虚幻引擎】UE4初学者系列教程开发进阶实战篇——生存游戏案例

一、课程体系 1 学前必读 2 Character类相关基础 -人物移动控制 -动画蓝图 3 常见游戏机制基础 -碰撞器、触发器 -物体使用接口 -视角切换 4其他相关设计 -背包系统 -锻造系统 -物体破碎效果 -简易种植系统 -互动物体动画 5课程结语 二、UI部分 思维导图部分 实操部分 …

如何借助AI在20分钟内写一个springboot单表的增删改查

目录 1. AI工具介绍2. 写代码的正确顺序2.1 编写 Entity 类&#xff1a;2.2 编写 Mapper 接口&#xff1a;2.3 编写 Mapper XML 文件&#xff08;如果使用 MyBatis&#xff09;&#xff1a;2.4 编写 Service 接口&#xff1a;2.5 编写 Service 实现类&#xff08;ServiceImpl&a…

【pyhton学习】深度理解类和对象

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 一、一切皆对象1.1 对象的概念1.2 如何创建类对象1.3 类型检测 二、属性与方法2.1 如何查看属性与方法2.2 属性和方法…

C语言 | Leetcode C语言题解之第220题存在重复元素III

题目&#xff1a; 题解&#xff1a; struct HashTable {int key;int val;UT_hash_handle hh; };int getID(int x, long long w) {return x < 0 ? (x 1ll) / w - 1 : x / w; }struct HashTable* query(struct HashTable* hashTable, int x) {struct HashTable* tmp;HASH_F…

leetcode每日一题-3101 交替子数组计数

暴力遍历&#xff1a;看起来像是回溯,实际上就是递归 class Solution { private:long long _res 0; public:long long countAlternatingSubarrays(vector<int>& nums) {backtrack(nums, 0);return _res;}void backtrack(vector<int>& nums, long long st…

查询某个县区数据,没有的数据用0补充。

加油&#xff0c;新时代打工人&#xff01; 思路&#xff1a; 先查出有数据的县区&#xff0c;用县区编码判断&#xff0c;不存在县区里的数据。然后&#xff0c;用union all进行两个SQL拼接起来。 SELECTt.regionCode,t.regionName,t.testNum,t.sampleNum,t.squareNum,t.crop…

普中51单片机:数码管显示原理与实现详解(四)

文章目录 引言数码管的结构数码管的工作原理静态数码管电路图开发板IO连接图代码演示 动态数码管实现步骤数码管驱动方式电路图开发板IO连接图真值表代码演示1代码演示2代码演示3 引言 数码管&#xff08;Seven-Segment Display&#xff09;是一种常见的显示设备&#xff0c;广…

Visual studio 2023下使用 installer projects 打包C#程序并创建 CustomAction 类

Visual studio 2023下使用 installer projects 打包C#程序并创建 CustomAction 类 1 安装Visual studio 20203,并安装插件1.1 下载并安装 Visual Studio1.2 步骤二:安装 installer projects 扩展插件2 创建安装项目2.1 创建Windows安装项目2.2 新建应用程序安装文件夹2.3 添加…

A Threat Actors 出售 18 万名 Shopify 用户信息

BreachForums 论坛成员最近发布了涉及 Shopify 的重大数据泄露事件。 据报道&#xff0c;属于近 180,000 名用户的敏感数据遭到泄露。 Shopify Inc. 是一家总部位于安大略省渥太华的加拿大公司。 开发和营销同名电子商务平台、Shopify POS 销售点系统以及专用于企业的营销工…

SQL脚本初始化数据

创建或选择某个数据库&#xff0c;运行窗口输入&#xff1a;source,再拖入文件&#xff0c;回车即可&#xff1b; 虽然也可以使用图形化工具初始化数据&#xff0c;但是他会有内存限制&#xff0c;也就是较大的sql文件不可以初始化&#xff0c;而运行窗口没有sql文件大小限制&…

本周23个Github有趣项目llama-agents等

23个Github有趣的项目、工具和库 1、Positron 下一代数据科学 IDE。 您使用 VS Code 进行数据科学&#xff08;Python 或 R&#xff09;&#xff0c;但希望它包含专用控制台、变量窗格、数据浏览器和其他用于特定数据工作的功能。您使用 Jupyterlab 进行数据科学&#xff08;…

python读取csv出错怎么解决

Python用pandas的read_csv函数读取csv文件。 首先&#xff0c;导入pandas包后&#xff0c;直接用read_csv函数读取报错OSError&#xff0c;如下&#xff1a; 解决方案是加上参数&#xff1a;enginepython。 运行之后没有报错&#xff0c;正在我欣喜之余&#xff0c;输出一下d…

centos7部署mysql8.0

1.安装MySQL的话会和MariaDB的文件冲突&#xff0c;所以需要先卸载掉MariaDB。查看是否安装mariadb rpm -qa | grep mariadb 2. 卸载mariadb rpm -e --nodeps 查看到的文件名 3.下载MySQL安装包 MySQL官网下载地址: MySQL :: Download MySQL Community Serverhttps://dev.mys…

19.JWT

1►JWT博客推荐 阮老师讲得很好了&#xff0c;网址如下&#xff1a; http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html 2►ry是怎么践行JWT的呢&#xff1f; 问题一&#xff1a;不登录的时候有token吗&#xff1f; 答&#xff1a;没有&#xff0c;所…