redis安装

Redis的安装配置

安装Redis

  • 安装gcc依赖

    Redis是使用C语言编写的,Linux上并没有C语言的编译器,需要手动安装

    yum install -y gcc tcl
    
  • 上传安装包并解压

    将压缩包放在任意目录解压

    tar -xzf redis-6.2.6.tar.gz
    
  • 安装

    1.进入redis目录

    cd redis-6.2.6
    

    2.运行编译命令

    make && make install
    

没有报错就是安装成功了,默认安装路径:/usr/local/bin目录下,该目录已经默认配置到环境变量,因此可以在任意目录下运行这些命令。其中:

  • redis-cli:是redis提供的命令行客户端
  • redis-server:是redis的服务端启动脚本(默认为前台启动)
  • redis-sentinel:是redis的哨兵启动脚本

配置Redis启动模式

常见Redis启动方式:

  1. 默认启动
  2. 指定配置启动
  3. 开机自启

redis的配置文件为redis.conf文件,修改配置之前可先备份

cp redis.conf redis.conf.bck
  • 配置后台启动

    修改redis.conf的一些配置

    # 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
    bind 0.0.0.0
    # 守护进程,修改为yes后即可后台运行
    daemonize yes 
    # 密码,设置后访问Redis必须输入密码
    requirepass 123321
    
  • 配置开机自启

    1.新建一个系统服务文件

    vi /etc/systemd/system/redis.service
    

    2.添加一下内容

    [Unit]
    Description=redis-server
    After=network.target[Service]
    Type=forking
    ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
    PrivateTmp=true[Install]
    WantedBy=multi-user.target
    

    3.然后重载系统服务:

    systemctl daemon-reload
    

    4.执行下面的命令,可以让redis开机自启:

    systemctl enable redis
    

    新操作redis命令组

    • systemctl start redis //启动
    • systemctl stop redis //停止
    • systemctl restart redis //重启
    • systemctl status redis //查看状态

Redis客户端

Redis是一个客户端-服务端的程序,服务端提供数据存储等服务,客户端可以连接服务端,然后通过向服务端发送命令,读取或写入数据。

命令行客户端

通过cd /usr/local/bin/进入bin目录查看到redis-cli,这就是redis的命令行客户端

使用方式:

redis-cli [options] [commonds]
  • options:用来配置连接信息,常见的配置有下面几种方式
    • -h 127.0.0.1:指定要连接的redis节点的IP地址,默认是127.0.0.1(也可以输入当前虚拟机的IP地址,也能成功连接)
    • -p 6379:指定要连接的redis节点的端口,默认是6379
    • -a 32345678:指定redis的访问密码
  • commonds:用来操作redis的命令,不填该选项,就会直接进入redis的命令行客户端窗口

Reids中常见数据类型

在这里插入图片描述

Redis的通用命令

  • KEYS:查看符合模板的所有key
  • DEL:删除一个指定的key
  • EXISTS:判断key是否存在
  • EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除
  • TTL:查看一个KEY的剩余有效期

通过help [command] 可以查看一个命令的具体用法,例如:

# 查看keys命令的帮助信息:
127.0.0.1:6379> help keysKEYS pattern
summary: Find all keys matching the given pattern
since: 1.0.0
group: generic

key的结构

Reids没有数据库Table表的概念,可以给key的各单词之间用’:'隔开添加前缀实现层级结构

项目名:业务名:类型:id

String类型

String类型,也就是字符串类型,是Redis中最简单的存储类型。

其value是字符串,不过根据字符串的格式不同,又可以分为

  • string:普通字符串
  • int:整数类型,可以做自增、自减操作
  • float:浮点类型,可以做自增、自减操作

不管是哪种格式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型的最大空间不能超过512m

  • String的常见命令

    • SET:添加或者修改已经存在的一个String类型的键值对

    • GET:根据key获取String类型的value

    • MSET:批量添加多个String类型的键值对

    • MGET:根据多个key获取多个String类型的value

    • INCR:让一个整型的key自增1

    • INCRBY:让一个整型的key自增并指定步长,例如:incrby num 2 让num值自增2

    • INCRBYFLOAT:让一个浮点类型的数字自增并指定步长

    • SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行

    • SETEX:添加一个String类型的键值对,并且指定有效期

Hash类型

Hashe类型,也叫散列,其value是一个无序字典(类似于Java的Hash表)

String结构可以将对象序列化为JSON字符串后存储,但是当我们需要修改某一个字段时,很不方便。Hash结构可以将每隔对象中每个字段独立存储,可以很方便地针对某一个字段进行修改

  • Hash的常见命令:

    • HSET key field value:添加或者修改hash类型key的field的值

    • HGET key field:获取一个hash类型key的field的值

    • HMSET:批量添加多个hash类型key的field的值

    • HMGET:批量获取多个hash类型key的field的值

    • HGETALL:获取一个hash类型的key中的所有的field和value

    • HKEYS:获取一个hash类型的key中的所有的field

    • HINCRBY:让一个hash类型key的字段值自增并指定步长

    • HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

List类型

Redis的List类型与Java中的LinkedList类似,可以看做是一个双向链表结构,既可以支持正向检索也可以支持反向检索。特点也与LinkedList类似:有序、元素可重复、插入和删除快、查询速度一般。常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等

  • List的常见命令

    • LPUSH key element ... :向列表左侧插入一个或多个元素

    • LPOP key:移除并返回列表左侧的第一个元素,没有则返回nil

    • RPUSH key element ... :向列表右侧插入一个或多个元素

    • RPOP key:移除并返回列表右侧的第一个元素

    • LRANGE key star end:返回一段角标范围内的所有元素

    • BLPOP和BRPOP:与LPOP和RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil

Set类型

Redis的set结构和Java中的HashSet类似,可以看做是一个value为null的HashMap,因为也是一个Hash表,因此也具备HashSet的特点:无序、元素不可重复、查找快、支持交集、并集、差集等功能。可以用于交友列表显示共同好友的功能

  • Set的常见命令

    • SADD key member ... :向set中添加一个或多个元素

    • SREM key member ... : 移除set中的指定元素

    • SCARD key: 返回set中元素的个数

    • SISMEMBER key member:判断一个元素是否存在于set中

    • SMEMBERS:获取set中的所有元素

    • SINTER key1 key2 ... :求key1与key2的交集

SortedSet类型

Redis的SortedSet是一个可排序的set集合,与Java中的TreeSet有些类似,但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。SortedSet具有的特点:可排序元素、不重复、查询速度快。因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能

  • SortedSet的常见命令

    • ZADD key score member:添加一个或多个元素到sorted set ,如果已经存在则更新其score值

    • ZREM key member:删除sorted set中的一个指定元素

    • ZSCORE key member : 获取sorted set中的指定元素的score值

    • ZRANK key member:获取sorted set 中的指定元素的排名

    • ZCARD key:获取sorted set中的元素个数

    • ZCOUNT key min max:统计score值在给定范围内的所有元素的个数

    • ZINCRBY key increment member:让sorted set中的指定元素自增,步长为指定的increment值

    • ZRANGE key min max:按照score排序后,获取指定排名范围内的元素

    • ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素

    • ZDIFF、ZINTER、ZUNION:求差集、交集、并集

注意:所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可,例如:

  • 升序获取sorted set 中的指定元素的排名:ZRANK key member
  • 降序获取sorted set 中的指定元素的排名:ZREVRANK key memeber

ement值

  • ZRANGE key min max:按照score排序后,获取指定排名范围内的元素
  • ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素
  • ZDIFF、ZINTER、ZUNION:求差集、交集、并集

注意:所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可,例如:

  • 升序获取sorted set 中的指定元素的排名:ZRANK key member
  • 降序获取sorted set 中的指定元素的排名:ZREVRANK key memeber

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统程序设计--3. 文件操作

文件属性 存放文件属性的结构体 文件属性操操作函数 文件类型(7种) - 普通文件d目录p 管道文件l 符号链接(软链接) 判断文件类型的小程序 #include<sys/types.h> #include<sys/stat.h> #include<string.h> #include<stdio.h> #include<memory.h&…

单词反转和数组去重,附经典面试题一份

博彦科技笔试&#xff1a; 给定字符&#xff0c;拼接成单词进行反转单词&#xff1b; package org.example;public class Main {public static void main(String[] args) {char[] input {h, e, l, l, o, , w, o, r, l, d, , J, a, v, a};String inputToString new String(…

HTB:Precious[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机TCP端口进行开放扫描 使用curl访问靶机80端口 使用ffuf爆破一下子域 使用浏览器访问该域名 使用curl访问该域名响应头 使用exiftool工具查看该pdf信息 横向移动 USER_FLAG&#xff1a;adf5793a876a190f0c08b3b6247cec32…

【2024.11.10实测有效:Win11右键默认显示更多设置教程】

winX 选择管理员 reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve# 再 taskkill /f /im explorer.exe & start explorer.exe! none taskkill /f /im explorer.exe; start explorer.exe

环形链表问题(图 + 证明 + 题)

文章目录 判断链表是否有环返回链表开始入环的第一个结点 判断链表是否有环 题目链接 思路&#xff1a; 可以明确的是&#xff1a;若一个链表带环&#xff0c;那么用指针一直顺着链表遍历&#xff0c;最终会回到某个地方。 我们可以定义两个指针&#xff08;快慢指针&#xf…

【优选算法 — 滑动窗口】最大连续1的个数 将 x 减到0的最小操作数

最大连续1的个数 最大连续1的个数 题目描述 题目解析 给我们一个元素全是0或者1的数组&#xff0c;和一个整数 k &#xff0c;然后让我们在数组选出最多的 k 个0&#xff1b;这里翻转最多 k 个0的意思&#xff0c;是翻转 0 的个数< k&#xff0c;而不是一定要翻转 k …

HTML基础

1.HTML基本结构标签 在Visual Studio Code中&#xff0c;使用&#xff01;回车就可以创建一个HTML的基本结构 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"wi…

CSM快速匹配与多分辨率匹配代码实现

0. 简介 CSM在Cartographer中是比较基础且非常适合拓展的功能。他主要的步骤如下图。 主要实现的步骤为&#xff1a; 1&#xff09;获取先验位姿&#xff0c;通过TF获取里程计的值&#xff0c;作为当前scan的预测位姿&#xff0c;将这个预测位姿当做扫描匹配的先验。 2&…

力扣力扣力:动态规划入门(1)

相信大家在第一次学动态规划的时候都是一脸懵逼的&#xff0c;在看了很多题解之后&#xff0c;陷入到了空的“最优子结构”等的大词上&#xff0c;依旧看不懂动态规划到底在干什么。今天我们也是老样子再一次的从零开始学习与讲解&#xff0c;俺也是从零开始学动态规划&#xf…

私域流量时代下的新型商业模式:以开源链动 2 + 1 模式、AI 智能名片、S2B2C 商城小程序源码为例

摘要&#xff1a;本文探讨了私域流量时代的特点及其对商业盈利模式的影响。通过分析从大众消费时代到私域流量时代的转型&#xff0c;阐述了商品到“人”的变化过程。同时&#xff0c;深入研究了开源链动 2 1 模式、AI 智能名片和 S2B2C 商城小程序源码在私域流量发展中的作用…

多模态交互智能体全面解析:定义、架构、学习机制、系统实现、分类、应用场景及评估方法

多模态AI系统很可能会成为我们日常生活中无处不在的存在。使这些系统更具交互性的一种有希望的方法是将它们作为物理和虚拟环境中的智能体。目前&#xff0c;系统利用现有的基础模型作为创建具身智能体的基本构建块。将智能体嵌入这些环境中&#xff0c;有助于模型处理和解释视…

助眠白噪音视频素材哪里找?这些平台帮你快速找到放松素材

在现代社会&#xff0c;信息的轰炸让人们的生活节奏变得越来越快&#xff0c;很多人晚上都在床上辗转反侧&#xff0c;难以入眠。如果你也遇到这样的困扰&#xff0c;想要寻找助眠的白噪音视频素材&#xff0c;那么今天介绍的这些网站将会是你的福音&#xff01;它们提供高质量…

一年四起供应链投毒事件的幕后黑手

前言 2017年&#xff0c;黑客入侵Avast服务器&#xff0c;在CCleaner更新中植入恶意代码&#xff0c;被数百万用户下载。 2017年&#xff0c;M.E.Doc遭黑客攻击&#xff0c;篡改更新植入NotPetya&#xff0c;影响全球公司。 2020年&#xff0c;黑客入侵SolarWinds服务器&…

Qt信号和槽-->day04

Qt信号和槽 标准的信号和槽函数Qt中的槽函数Qt中的信号 connect案例 自定义信号和槽案例分析 信号槽的拓展信号连接信号案例 信号槽的两种连接方式Qt5中的处理方式Qt4中的处理方式Qt5处理信号槽重载问题案例 lambda表达式简单案例Qt中的应用 补充知识点 标准的信号和槽函数 QW…

【超级详细】基于Zynq FPGA对雷龙SD NAND的测试

目录 一、SD NAND特征1.1 SD卡简介1.2 SD卡Block图 二、SD卡样片三、Zynq测试平台搭建3.1 测试流程3.2 SOC搭建 一、SD NAND特征 1.1 SD卡简介 雷龙的SD NAND有很多型号&#xff0c;在测试中使用的是CSNP4GCR01-AMW与CSNP32GCR01-AOW。芯片是基于NAND FLASH和 SD控制器实现的…

linux物理内存管理:node,zone,page

一、总览 对于物理内存内存&#xff0c;linux对内存的组织逻辑从上到下依次是&#xff1a;node&#xff0c;zone&#xff0c;page&#xff0c;这些page是根据buddy分配算法组织的&#xff0c;看下面两张图&#xff1a; 上面的概念做下简单的介绍&#xff1a; Node&#xff1a…

STM32-Flash闪存

目录 一、简介 1、闪存模块组织 2、FLASh基本结构 3、FLash写入和读取操作 4、编程流程 5、选项字节格式 6、选项字节编程步骤 二、读写芯片内部FLASH编程 三、器件电子签名 1、简介 2、编程实现 一、简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节…

数据结构之带头双向循环链表

前言&#xff1a;前面我们实现了顺序表和单链表&#xff0c;这次来实现一个结构更复杂的链表-----带头双向循环链表。不要被它的名字吓到哦&#xff0c;只是结构复杂而已&#xff0c;它的结构更有利于代码的实现。 1 双向循环链表的介绍 有了单链表的基础&#xff0c;要实现这…

10个最常用的Python包,程序员必备!

世界上有超过200,000个Python程序包&#xff08;这只是基于官方的Python程序包索引PyPI托管的程序包&#xff09;。 这就引出了一个问题&#xff1a;拥有这么多的软件包&#xff0c;每个Python程序员都需要学习哪些软件包是最重要的&#xff1f; 为了帮助回答这个问题&#x…

线上问题的排查-java死锁问题如何排查

这里写目录标题 1.java死锁如何排查2.具体步骤1.1识别死锁现象1.2收集线程转储1.3分析线程转储1.4代码审查1.5重现问题1.6使用调试工具1.7.优化和验证 3. 解决方案总结 1.java死锁如何排查 在Java应用程序中&#xff0c;死锁是一个经典的并发问题&#xff0c;它会导致线程永久阻…