Redis的相关基础了解

1. 什么是nosql

nosql【not only sql】不仅仅是sql。所有非关系型数据库的统称,除去关系型数据库之外都是非关系数据库

2. NOSQL和RDBMS的区别

RDBMS——关系型数据库的通常

  • 高度组织化 结构化 数据
  • 结构化查询语言(SQL) sql语句
  • 数据和关系都存储在单独的表中
  • 数据操纵语言DML,数据定义语言DDL
  • 严格的一致性——事务
  • 基于事务
  • MySQL基于磁盘

NOSQL_非关系型数据库的统称

  • 代表着不仅仅是SQL
  • 没有声明性查询语言。sql语句
  • 键—值对存储
  • 非结构化和不可预知的数据 value:字符串 对象 列表(list) 无序集合(set)
  • 高性能、高可用和可伸缩性。 适合搭建集群。——基于内存计算

3. 常用的NOSQL产品

redis[企业使用频率很高]

mongodb[了解]

hbase[适合大数据]

4. 什么是redis

网址:https://redis.io/

Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用于数据库、缓存和消息代理。Redis提供数据结构,例如:字符串、哈希、列表、集合,带范围查询的排序集合,位图,超日志,地理空间索引和流

Redis具有内置的复制【集群】,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久化【磁盘】,并通过Redis Sentinel 和 Redis Cluster 自动分区提供了高可用性【集群】

Redis是免费的软件,它可以用作数据库、缓存、消息代理。而且里面可以存储多种数据类型,并且提高了高可用机制

5. 如何安装Redis

redis软件语言是C语言——必须安装C的环境

5.1 准备环境

  1. 安装redis需要的环境
 yum install -y gcc-c++

若在此之前以及安装过Nginx,便可以省去此步骤,因为Nginx的安装同样需要安装C的环境

  1. 上官网下载redis源码安装包
redis-5.0.8.tar.gz

5.2 安装

1. 放入centos并解压

在这里插入图片描述

2. 解压该文件

tar -zxvf redis-7.2.3.tar.gz

3. 进入解压后的目录

cd redis-7.2.3

4. 编译安装

make install
自动配置环境变量

5. 启动redis服务器

redis-server redis.confredis-server:redis启动的脚本命令
redis.conf:redis配置文件的名安装redis.conf这个配置来启动redis服务

6. 客户端连接redis服务器

客户端:——java代码——图形化界面——命令行的客户端

redis-cli -h redis服务器的ip -p 端口号-h:如果不写默认为127.0.0.1
-p:默认6379

5.3 浅聊配置文件

配置文件:redis.conf

修改端口号:

默认6379

在这里插入图片描述

修改后台启动:这样就不必打开新窗口

在这里插入图片描述

运行远程访问:修改ip,以便图形化界面连接

在这里插入图片描述

学习过程中可以修改保护模式为no

我们在redis的配置文件中会遇到protected-mode,它直译为保护模式。

如果设置为yes,那么只允许我们在本机的回环连接,其他机器无法连接。

线上Redis服务,为了安全,我们建议将protected-mode设置为yes。

protected-mode设置为yes的情况下,为了我们的应用服务可以正常访问Redis,我们需要设置Redis的bind参数或者密码参数requirepass。

修改配置文件保存后,需要杀死redis进程再启动redis进程

5.4 安装图形化客户端

native可以【版本16.3.7】

idea可以【版本2023】

redisplus等

若不能正常连接,考虑以下情况:

  1. 防火墙
  2. 允许远程连接
  3. 保护机制没有关闭

在这里插入图片描述

6. 使用redis

6.1 key操作的命令

keys * :查看所有的key
del key ...:删除指定的key
expire key second:为指定的key设置过期时间
exists key :判断指定的key是否存在

6.2 数据库的命令

select n :选择库
flushdb:清空当前库
flushall:清空所有库

6.3 redis支持的数据类型

在线文档参考网址:http://www.redis.net.cn/order/

redis支持的数据类型种类很多,其中使用最频繁的:String字符串、Hash、List队列、Set无序集合,ZSet有序集合等

6.3.1 字符串类型

表示里面的value的类型为字符串类型。默认可以存放512M大小的字符串内容

在这里插入图片描述

常用

  1. set key value:存放字符串类型的数据
  2. get key:获取指定key对应的value值
  3. setex key second value:存放字符串类型的数据并设置过期时间
  4. setnx key value:如果指定的key存在,则不设置。不存在则存入
  5. incr key:为指定的key递增
  6. decr key:为指定的key递减

3可以用于验证码的有效期

5,6可用于统计显示点赞的数量

操作实例

在这里插入图片描述

对于命令3,实例中生存周期为30秒,下两张图显示了生存周期的倒计时

  • 图1

在这里插入图片描述

  • 图2

在这里插入图片描述

6.3.2 Hash类型

表示value值为Hash数据类型。表示value又是key-value形式

在这里插入图片描述

常用

命令均以h开头

  1. hset key field value:存储哈希类型的数据
  2. hget key field:获取存在哈希表中指定字段的value值
  3. hgetall key:获取在哈希表中指定key的所有字段和值
  4. hkeys key:获取所有哈希表中的字段
  5. hvals key:获取哈希表中所有的值
  6. hexists key field:查询哈希表key中,指定的字段是否存在

操作实例

在这里插入图片描述

6.3.3 list队列类型

list表示列表类型,表示value的值为list类型,插入有序且允许重复

在这里插入图片描述

常用

命令大多以l开头

  1. lpush key value value...:将一个或多个值插入到列表的头部
  2. lrange key start end:获取列表指定范围内的元素【前包后包
  3. linsert key before|after element value:在列表元素前或后插入元素
  4. lpop key:移除并获取列表中的第一个元素
  5. lset key index value:修改指定下标的值

操作实例

在这里插入图片描述

6.3.4 set无序不重复集合

set:无序,不可重复的集合

Redis 中的 Set 数据类型的内部编码方式有两种,分别是==intsethashtable==。这两种编码方式根据集合的大小和元素类型来选择,以最大程度地节省内存和提高性能。

intset(整数集合):

特点:intset 是 Redis 用于表示只包含整数值的集合的编码方式。它是一个有序的、紧凑的、不可重复的集合,内部使用整数表示元素值。适用场景:intset 适用于存储小型整数集合,因为它在内存占用和性能方面都非常高效。当集合中的元素都是整数且数量较少时,Redis 会选择使用 intset 编码。优点:节省内存:intset 采用紧凑的二进制存储,每个整数只占用所需的字节。高效的查找和插入:由于元素都是整数且有序,查找和插入操作的时间复杂度是 O(log(N))。

hashtable(哈希表):

特点:hashtable 是 Redis 用于表示包含字符串、浮点数或其他数据类型的集合的编码方式。它是一个无序的、动态大小的集合,内部使用哈希表来存储元素。适用场景:hashtable 适用于存储包含各种数据类型的集合,以及大型集合,因为它可以动态增长并处理各种数据类型。优点:适用性广泛:hashtable 可以存储不同类型的数据,而不仅限于整数。动态增长:可以随时添加或删除元素,适用于大型集合。

在这里插入图片描述

  1. sadd key element element...:向集合添加一个或多个成员

  2. smembers key返回集合中的所有成员

    在这里插入图片描述

  1. srem key移除集合中一个或多个成员

  2. sinter key key...返回给定所有集合的交集【显示共同好友】

    在这里插入图片描述

6.3.5 zset有序不重复集合

有序,元素不允许重复的集合。有序和属性score有关,和添加顺便无关。

当添加相同value时,元素不重复,score覆盖。

在这里插入图片描述

  1. zadd key score value score value score value...:向有序集合添加一个或多个成员,或者更新已存在的成员的score
  2. zrange key start end:通过索引区间返回有序集合中指定区间内的成员
  3. zrevrange key start end:返回有序集合中指定区间内的成员,通过索引,分数从高到低——取反

在这里插入图片描述

如果zadd命令中,value相同,score会覆盖

在这里插入图片描述

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

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

相关文章

八、桥接模式

文章目录 1 基本介绍2 案例2.1 OperatingSystem 抽象类2.2 LinuxOS 类2.3 WindowsOS 类2.4 FileOperation 类2.5 FileAppender 类2.6 FileReplicator 类2.7 Client 类2.8 Client 类运行结果2.9 总结 3 各角色之间的关系3.1 角色3.1.1 Implementor ( 实现者 )3.1.2 ConcreteImpl…

ARTMO Table ‘db1.test_mla_result‘ doesn‘t exist解决方案

com.mysql.jdbc.JDBC4PreparedStatement3f3c966c: describe test_mla_result; Java exception occurred: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table db1.test_mla_result doesnt exist解决方案: 打开MySQL的command Line, 输入SHOW TABLES…

基于微信小程序的高校排课系统 /基于微信小程序的排课管理系统/课程管理系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…

Vue2和Vue3实战代码中的小差异(实时更新)

目录 前言1. 未使用自闭合标签2. 事件名连字符3. 换行符4. 弃用.sync 前言 以下文章实时更新&#xff0c;主打记录差异 1. 未使用自闭合标签 104:7 error Require self-closing on Vue.js custom components (<el-table-column>) vue/html-self-closing✖ 1 problem…

Canal监听Mysql回写Redis

目录 一、canal服务端 1.1 下载 1.2 解压 1.3 配置 1.4 启动 1.5 查看 二、canal客户端&#xff08;Java编写业务程序&#xff09; 2.1 SQL脚本 2.2 写POM 2.3 写Yaml 2.4 写业务类 2.4.1.项目结构 2.4.2 Utils.RedisUtil 2.4.3 biz.RedisCanalClientExample 一、…

麦田物语第十五天

系列文章目录 麦田物语第十五天 文章目录 系列文章目录一、构建游戏的时间系统二、时间系统 UI 制作总结 一、构建游戏的时间系统 在该游戏中我们要构建年月日天时分秒等时间的概念&#xff0c;从而实现季节的更替&#xff0c;昼夜的更替等&#xff08;不同的季节可以播种不同…

基于gaussian计算NICS值评估分子体系的芳香性和反芳香性

计算分子NICS值的基本流程 其中第1行的Bq即为NICS(0)虚原子对应的位置&#xff0c;7.5538为NICS(0)对应虚原子位置处的各向同性化学位移屏蔽值。 由于NICS值为各向同性化学屏蔽值的负值&#xff0c;因此苯的NICS(0)和NICS(1)分别为-7.5538和-10.5301&#xff0c;这也表明苯分…

通信类IEEE会议——第四届通信技术与信息科技国际学术会议(ICCTIT 2024)

[IEEE 独立出版&#xff0c;中山大学主办&#xff0c;往届均已见刊检索] 第四届通信技术与信息科技国际学术会议&#xff08;ICCTIT 2024&#xff09; 2024 4th International Conference on Communication Technology and Information Technology 重要信息 大会官网&#xf…

python生成系统测试数据

开发系统的时候,为了系统可以更好的进行测试,一般需要准备测试数据,以便可以顺利的对各种场景进行测试,使用两张表来说明怎么快速生成测试数据。 1.用户表 一般登录的时候,需要用到用户表 用户表字段如下: 用户名、密码、姓名、性别、邮箱、手机号、用户类型、地址 下…

Linux进程间通信(管道+共享内存)

进程间通信&#xff08;interprocess communication&#xff0c;简称 IPC&#xff09;指两个进程之间的通信。系统中的每一个进程都有各自的地址空间&#xff0c;并且相互独立、隔离&#xff0c;每个进程都处于自己的地址空间中。所以同一个进程的不同模块&#xff08;譬如不同…

【PyQt5】一文向您详细介绍 setPlaceholderText() 的作用

【PyQt5】一文向您详细介绍 setPlaceholderText() 的作用 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通…

剑和沙盒 6 - 线程辱骂 – 使用线程名称进行攻击

强调&#xff1a; 进程注入是攻击者工具包中的重要技术之一。在下面的文章中 解释了如何滥用线程描述 API 来绕过端点保护产品。提出了一种新的注入技术&#xff1a;Thread Name-Calling&#xff0c;并给出了实施保护的相关建议。 介绍 进程注入是攻击者使用的重要技术之一 。…

《Programming from the Ground Up》阅读笔记:p75-p87

《Programming from the Ground Up》学习第4天&#xff0c;p75-p87总结&#xff0c;总计13页。 一、技术总结 1.persistent data p75, Data which is stored in files is called persistent data, because it persists in files that remain on disk even when the program …

一文理解生成式AI应用的五个级别:Tool、Chatbot、Copilot、Agent 和 Intelligence

当下&#xff0c;很多人对 AI 一知半解&#xff0c;并不能很好地区分&#xff1a;Tool、Chatbot、Copilot、Agent 和 Intelligence 概念之间的区别。 最近读完 《真格基金戴雨森谈生成式AI&#xff1a;这是比移动互联网更大的创业机会&#xff0c;开始行动是关键 》 发现讲的特…

机器人无人机视觉避障常见方式及优缺点总结

视觉避障是一种通过视觉传感器&#xff08;如摄像头&#xff09;捕捉环境图像信息&#xff0c;经过图像处理和计算机视觉算法分析&#xff0c;识别并定位障碍物&#xff0c;进而实现避障的技术。 一、常见方式 机器人无人机视觉避障是指通过视觉传感器获取周围环境信息&#x…

html+css 实现悬浮按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 文…

AI机器人本地免费部署(部署Llama 3.1详细教程)

昨日&#xff0c;Meta公司发布了人工智能模型——Llama 3.1。 那么Llama 3.1 405B的效果怎么样&#xff1f;我们来对比一张图&#xff0c;横向对比一下GPT-4。 可以看出&#xff0c;Llama 3.1 405B在各类任务中的表现可以与GPT-4等顶级的模型相差无几。 那么&#xff0c;我们…

2024年国际高校数学建模大赛(IMMCHE)问题A:金字塔石的运输完整思路代码 结果分享(仅供学习)

2024 International Mathematics Molding Contest for Higher Education Problem A: Transportation of Pyramid Stones&#xff08;2024年国际高校数学建模大赛&#xff08;IMMCHE&#xff09;问题A&#xff1a;金字塔石的运输&#xff09; 金字塔的建造是古埃及文明的杰出成…

嵌入式Python、决策树算法、SQLite、Flask、树莓派、机器学习:基于算法自主决策的智能家居系统(代码示例)

项目概述 随着物联网技术的快速发展&#xff0c;智能家居系统越来越普及&#xff0c;成为现代家庭生活的重要组成部分。本文将介绍一个基于Raspberry Pi和Arduino的智能家居算法控制系统的硬件平台。该系统能够通过传感器采集环境数据&#xff0c;并利用机器学习算法进行分析与…

Unity 资源 之 Pop It 3D 解压玩具与双人AI游戏 Unity 资源包分享

精彩呈现&#xff1a;Pop It 3D 解压玩具与双人AI游戏 Unity 资源包分享 一、Pop It 3D 解压玩具的魅力二、双人游戏的互动乐趣三、Unity 游戏资源包的优势四、如何获取资源包 亲爱的游戏爱好者们&#xff0c;今天为大家带来一款令人兴奋的游戏资源——Pop It 3D 解压玩具双人带…