Redis-----什么是Redis?

news2024/11/16 1:40:50

什么是Redis?

redis是一个基于内存的key-value结构数据库。

  • 基于内存存储,读写性能高
  • 适合存储热点数据(热点商品、资讯、新闻)
  • 企业应用广泛

Redis入门

  • redis简介

    redis是一个开源的内存中的数据结构存储系统,数据库、缓存和消息中间件 (非关系型数据库)

    • 关系型数据库(RDBMS)
      • mysql
      • oracle
      • DB2
      • SQLServer
    • 非关系型数据库(NoSql)
      • redis
      • MongoDB
      • memcached
    • redis应用场景
      • 缓存
      • 任务队列
      • 消息队列
      • 分布式锁
  • redis下载与安装

    • window下安装(比较简单)
    • Linux下安装
      1. 将redis安装包上传到Linux
      2. 解压安装包,命令: tar -zxvf redis -C /usr/local
      3. 安装redis的依赖环境gcc ,命令:yum install gcc-c++
      4. 进入/usr/local/redis-4.0.0,进行编译,命令:make
      5. 进入redis的src目录,进行安装,命令:make install
  • redis服务启动与停止

    • Linux中redis服务启动,可以使用redis-server,默认端口号为6379
    • ctrl+c停止redis服务

注意:如果需要进行远程访问,这时我们需要进行redis远程校验密码设置

  1. 进行redis校验密码设置:(操作文件redis.conf)将requiredpass删除注释,后面设置密码
    在这里插入图片描述

  2. 开启redis远程访问服务 (操作文件redis.conf)将bind 127.0.0.1 进行注释,这样就可以远程访问了!!!注意关防火墙,或者开放所需要的端口

在这里插入图片描述

./redis-cli -h localhost -p 6379 -a 123456 本地访问(如果远程访问,将localhost改为ip地址)

访问时报错

(error) NOAUTH Authentication required.

可以输入命令:auth 123456 (密码)

数据类型

  • 介绍

    redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型:

    1. 字符串 String
    2. 哈希 hash
    3. 列表 list
    4. 集合 set
    5. 有序集合 sorted set
  • redis五种常用数据类型

    1. string普通字符串,常用 (key:string)
    2. hash 适合存储对象 (key:{(key:value),(key:value),…})
    3. list 按照插入顺序排序,可以有重复元素 (key:[str,str2,…])
    4. set无序集合,没有重复元素
    5. sorted set有序集合,没有重复元素

常用命令

  • 字符串String操作命令

    • set key value 设置指定key的值
    • get key 获取指定key的值
    • setex key seconds value 设置指定key的值,并将key的过期时间设为seconds秒
    • setnx key value 只有在key不存在时设置key的值
  • 哈希hash操作命令

    • redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象,常用命令:

      hset key field value 将哈希表key中的字段field的值设为value

      hget key field 获取存储在哈希表中的指定字段的值

      hdel key field 删除存储在哈希表中的指定字段

      hkeys key 获取哈希表中所有字段

      hvals key 获取哈希表中所有值

      hgetall key 获取在哈希表中指定key的所有字段和值

  • 列表list操作命令

    • redis列表是简单的字符串列表,按照插入顺序排序,常用命令:

      lpush key value1 [value2] 将一个或多个值插入到列表头部

      lrange key start stop 获取列表指定范围内的元素

      rpop key 移除并获取列表最后一个元素

      llen key 获取列表长度

      brpop key1[key2] timeout 移出并获取的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

  • 集合set操作命令

    • redis set 是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,常用命令:

      sadd key member1 [member2] 向集合添加一个或多个成员

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

      scard key 获取集合的成员数

      sinter key1 [key2] 返回给定所有集合的交集

      sunion key1 [key2] 返回所有给定集合的并集

      sdiff key1 [key2] 返回给定所有集合的差集

      srem key member1 [member2] 移除集合中一个或多个成员

  • 有序集合sorted set操作命令

    • redis sorted set 有序集合是string类型元素的集合,且不允许重复的成员。每个元素都会关联一个double类型的分数(score)。redis正是通过分数来为集合中的成员进行从小到大排序。有序集合的成员是唯一的,但分数却可以重复。

      常用命令:

      zadd key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数

      zrange key start stop [withscores] 通过索引区间返回有序集合中指定区间内的成员

      zincrby key increment member 有序集合中对指定成员的分数加上增量increment

      zrem key member [member …] 移除有序集合中的一个或者多个成员

  • 通用命令

    keys pattern 查找所有符合给定模式(pattern)的key

    exists key 检查给定key是否存在

    type key 返回key所存储的值的类型

    ttl key 返回给定key的所剩生存时间(TTL,time to live),以秒为单位

    del key 该命令用于在key存在是删除key

在java中操作Redis

  • 介绍

    • Redis的java客户端很多,官方推荐的有三种:
      • Jedis
      • Lettuce
      • Redisson

    Spring对Redis客户端进行了整合,提供了spring data redis ,在spring boot项目中还提供了对应的starter,即spring-boot-starter-data-redis

  • Jedis

    Jedis的maven坐标:

    ​ redis.clients

    ​ jedis

    ​ 2.8.0

    使用Jedis操作redis的步骤:

    • 获取连接
    • 执行操作
    • 关闭连接
  • Spring Data Redis

    在springboot项目中,可以使用spring data redis来来简化redis操作,maven坐标:

    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    

    Spring data redis中提供了一个高度封装的类:RedisTemplate,针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分裂如下:

    • ValueOperations:简单K-V操作
    • SetOperations:set类型数据操作
    • ZSetOperations:zset类型数据操作
    • HashOperations:针对map类型的数据操作
    • ListOperations:针对list类型的数据操作

    在程序中使用redisTemplate时,程序设置key 和value时默认调用序列化,从而导致值发生改变,这时需要更改key序列化器,而value不需要更改序列化器,因为value在get的时候会进行反序列化。

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

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

相关文章

ASP宿舍管理系统设计与实现

学生宿舍的管理工作也将成为一项十分繁重的工作&#xff0c;建立一个学生宿舍管理系统是非常必要的&#xff0c;可行的。计算机能够极大地提高学生宿舍管理的办事效率&#xff0c;学校要想与先进科学技术接轨&#xff0c;就得科学化、正规化的进行管理。随着社会信息化步伐的加…

使用Unity模拟人群疏散的资料整理

本文地址&#xff1a;https://blog.csdn.net/t163361/article/details/130136283 UnityDemo Evacuation Simulator Unity_EvacuationSimulator Crowd-Simulation-and-Visualization-in-Unity Multi-agent-simulation-program-for-evacuation Crowd-Evacuation-Simulatio…

Android SQLite插入float类型浮点数小数位数异常(四舍五入过的两位小数变成13位小数)的原因和解决方法

浮点数异常截图&#xff1a; 说明&#xff1a; 正常保留两位小数并正确插入的记录是通过db.execSQL(sql);方法插入的&#xff0c;而浮点数异常的是通过ContentValues db.insert() 方式插入的,可以发现问题出在db.insert()方法上&#xff0c;我又试过在put的时候直接输入类似16…

zabbix代理服务器部署

分布式监控的作用&#xff1a; ●分担 server 的集中式压力 ●解决多机房之间的网络延时问题 部署zabbix代理服务器 1、关闭防火墙、修改主机名 systemctl disable --now firewalld setenforce 0 hostnamectl set-hostname zbx-proxy su 2、设置zabbix的下载源&#xff0c;按…

7.2 模拟乘法器及其在运算电路中的应用

模拟乘法器是实现两个模拟量相乘的非线性电子器件&#xff0c;利用它可以方便地实现乘、除、乘方和开方运算电路。此外&#xff0c;由于它还能广泛地应用于广播电视、通讯、仪表和自动控制系统&#xff0c;进行模拟信号的处理&#xff0c;所以发展很快&#xff0c;称为模拟集成…

【微信小程序-原生开发】添加自定义图标(以使用阿里图标库为例)

方式一 &#xff1a; 下载svg导入 优点&#xff1a;操作方便&#xff0c;支持多彩图标缺点&#xff1a;会增加源代码大小 下载 svg 格式的图标图片&#xff0c;放入源码中使用 小程序项目中的路径为 assets\icon\美食.svg 使用时-代码范例 <image class"imgIcon"…

【JSP学习笔记】3.JSP 指令及动作元素

前言 本章介绍JSP的指令和动作元素。 JSP 指令 JSP指令用来设置整个JSP页面相关的属性&#xff0c;如网页的编码方式和脚本语言。 语法格式如下&#xff1a; <% directive attribute"value" %>指令可以有很多个属性&#xff0c;它们以键值对的形式存在&am…

属性文法和语法制导翻译

前言 前面通过词法分析&#xff0c;语法分析&#xff0c;DFA最后接受了一个输入实际上是理解了某一句编程语句&#xff0c;编译器的角色是将高级程序语言编译&#xff08;翻译&#xff09;为汇编代码&#xff0c;通过词法、语法分析编译器可以理解高级程序语言了&#xff0c;那…

JavaScript + DOM

JavaScript 官方文档 https://www.w3school.com.cn/js/index.asp 基本说明 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SgjOIfTi-1681034533049)(E:\Kuangshen\学习笔记\韩顺平java\JavaScript_img\image-20230409130530115.png)] <!DOCT…

华为手表开发:WATCH 3 Pro(18)传感器订阅 方向传感器

华为手表开发&#xff1a;WATCH 3 Pro&#xff08;18&#xff09;传感器订阅 方向传感器初环境与设备方向传感器鸿蒙开发文件夹&#xff1a;文件新增展示的文本标记index.hmlindex.cssindex.js初 希望能写一些简单的教程和案例分享给需要的人 鸿蒙可穿戴开发 环境与设备 系…

Java设计模式之状态模式

状态模式 状态模式允许一个对象在其内部状态改变的时候改变其行为 应用场景 1、一个对象的行为取决于它的状态&#xff0c;并且它必须在运行时根据状态改变它的行为 2、操作中含有庞大的多分支的条件语句&#xff0c;且这些分支依赖于该对象的状态。这个状态通常用一个或者…

管廊隧道怎么定位人员?分享管廊隧道人员定位系统解决方案

管廊隧道施工的安全不仅关系着施工项目的质量与施工效率&#xff0c;更是关系着国家财产安全以及施工人员和人民群众的生命和财产安全。如何有效加强管廊隧道施工安全管理水平成为管廊隧道项目施工企业管理者最为关注的问题。 管廊隧道施工安全管理痛点难题 1.风险预警难 现场…

《数据库系统概论》第三章课后习题 (4个表+三建工程项目)

目录 5. 针对习题4中的4个表试用SQL完成以下各项操作&#xff1a; 9. 为三建工程项目建立一个供应情况的视图&#xff0c;包括供应商代码SNO, 零件代码PNO, 供应数量QTY&#xff0c;针对该视图完成下列查询&#xff1a; 5. 针对习题4中的4个表试用SQL完成以下各项操作&#x…

Resnet代码详解

这篇文章是用来讲解Resnet(残差网络)代码的&#xff0c;结合代码理解残差网络结构。 目录 Bottleneck类 Conv33 Conv11 BasicBlock ResNet _make_layer代码解析 完整的ResNet代码&#xff1a; 可以直接调用torch内置的resnet官方代码。 from torchvision.models impo…

华为手表开发:WATCH 3 Pro(19)传感器订阅 光线传感器

华为手表开发&#xff1a;WATCH 3 Pro&#xff08;19&#xff09;传感器订阅 光线传感器初环境与设备光线传感器鸿蒙开发文件夹&#xff1a;文件新增展示的文本标记index.hmlindex.cssindex.js初 希望能写一些简单的教程和案例分享给需要的人 鸿蒙可穿戴开发 环境与设备 系…

IP子网划分例题详解

子网划分概念&#xff1a; 通过改变ip的掩码长度来改变ip的网络地址&#xff0c;把原来的ip地址从网络位主机位&#xff0c;改成网络位子网位主机位。从而达到缩小主机个数或者扩大主机个数。缩小主机位&#xff0c;可以避免ip资源的浪费&#xff0c;减小广播域&#xff0c;提…

当对象释放时,避免析构函数调用两次

在上一篇文章中&#xff0c;我们提到过&#xff0c;在一个对象的析构函数中执行太多任务&#xff0c;可能导致对象被释放两次。解决此问题的标准方法是在析构过程中使用一个自定义的引用计数&#xff0c;如下图所示&#xff1a; >> 请移步至 topomel.com 以查看图片 <…

【Python】爬虫数据提取

目录 一、xpath提取数据 二、爬虫爬取图片资源 三、爬虫爬取视频资源 四、FLV文件转码为MP4文件 一、xpath提取数据 <bookstore> <book category"Python 基础"><title lang"cn">cook book</title><author>David Beazle…

PROFINET1.8.0.5协议移植问题汇总

注&#xff1a;记录个人移植过程遇到的问题&#xff0c;正在更新。。。 PROFINET1.8.0.5协议移植遇到问题汇总&#xff1a; 软件环境&#xff1a;TIA_V17 硬件环境&#xff1a;stm32F205_ZET6主控芯片TPS-1 PROFINET IO 20500PF00&#xff08;芯片物料编码B0001.0.2&#xff09…

LabVIEW-数组数据类型

数组是将一系列、同一类型的数据组合到一起。在LabVIEW 中&#xff0c;数组可以是字符串类型、数值型或者布尔型等多种数据类型中的同类数据的集合。但不能创建以数组为元素的数组&#xff0c;也不能创建图标和图形数组。 目录 创建数组 ​编辑 数组相关函数 求数组大小 初…