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,一经查实,立即删除!

相关文章

IPython 调试秘籍:精通 %xmode 命令的错误显示模式设置

IPython 调试秘籍&#xff1a;精通 %xmode 命令的错误显示模式设置 在使用 IPython 进行交互式编程时&#xff0c;错误信息的显示模式对于调试代码至关重要。%xmode 命令是 IPython 中专门用于控制错误信息展示方式的魔术命令。本文将详细解释 %xmode 命令的使用方法&#xff…

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

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

ubuntu22 设置开机直接登录桌面

专栏总目录 一、打开设置文件 sudo vi /etc/gdm3/custom.conf 二、修改设置 在[daemon] 找到AutomaticLoginEnable和AutomaticLogin选项&#xff0c;取消注释并修改为&#xff1a; [daemon] # 自动登录用户名 AutomaticLoginEnableTrue AutomaticLoginusername 其中usernam…

《向量数据库指南》——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…

Python面试题:在 Python 中,如何实现上下文管理器(context manager)?

在 Python 中&#xff0c;实现上下文管理器&#xff08;context manager&#xff09;有两种常见的方法&#xff1a;使用类和使用装饰器&#xff08;contextlib 模块中的 contextmanager 装饰器&#xff09;。上下文管理器用于管理资源&#xff0c;例如文件、网络连接等&#xf…

昇思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…

BiLSTM模型实现

# 本段代码构建类BiLSTM, 完成初始化和网络结构的搭建 # 总共3层: 词嵌入层, 双向LSTM层, 全连接线性层 # 本段代码构建类BiLSTM, 完成初始化和网络结构的搭建 # 总共3层: 词嵌入层, 双向LSTM层, 全连接线性层 import torch import torch.nn as nn# 本函数实现将中文文本映射为…

Android使用HttpURLConnection实现文件上传(包括图片)

1.文件上传完整代码 下面是完整的文件上传代码&#xff0c;复制即可使用。注意要开启子线程运行 public class UploadFileTask {/*** 上传文件到服务器&#xff0c;并返回服务器相应结果* param requestURL 服务器的地址* param imageUri 文件的Uri* param context* return 服…

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

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

只需4500字,带你学习Python中7种基础数据类型!

Python 语言以其简洁、高效和强大的功能&#xff0c;成为了无数开发者和编程爱好者的首选。无论是数据分析、人工智能、网络开发还是自动化脚本&#xff0c;Python 都能以其优雅的语法和丰富的库支持&#xff0c;让编程变得更加简单而有趣。 但正如建造一座大厦需要坚实的地基…

如何借助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 属性和方法…

postgresql日志的配置

postgresql日志的配置 一 常用日志参数设置 1 在哪里做日志 logging_collector = on/off这个参数启用日志收集器,是否将日志重定向至文件中。默认是off。设置需要重启库 log_directory当logging_collector被启用时,这个参数决定日志文件将被在哪个目录下创建。默认是log。设…

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;广…