Redis基本使用

Redis基本使用

  • 1.通用命令
  • 2.基本数据类型
    • 2.1 String
    • 2.2 Hash
    • 2.3 List
    • 2.4 Set
    • 2.5 SortedSet
  • 3. SpringDataRedis
    • 3.1 简介
    • 3.2 快速代码示例
    • 3.3 序列化

1.通用命令

针对所有数据类型的操作可以在Redis官方文档查看。以下是通用的命令。

KEYS:查看符合模板的所有key
DEL:删除一个指定的key
EXISTS:判断key是否存在
EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除
TTL:查看一个KEY的剩余有效期
help [command]: 可以查看一个命令的具体用法

2.基本数据类型

2.1 String

String类型,也就是字符串类型。
根据字符串的格式不同,又可以分为3类:

  • string:普通字符串
  • int:整数类型,可以做自增、自减操作
  • float:浮点类型,可以做自增、自减操作
    不管是哪种格式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型的最大空间不能超过512MB
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类型的键值对,并且指定有效期

关于SET命令的详细说明:
上述命令中的SETNX,SETEX命令等价于SET key value NX … / SET key value EX…。

SET K1 V1 EX 10 = SETNX K1 10 V1

官方文档中关于SET命令的说明

SET key value [NX | XX] [GET] [EX seconds | PX milliseconds |EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]//参数说明
EX        //设置指定的过期时间,单位为秒(正整数)。
PX        //设置指定的过期时间,单位为毫秒(正整数)。
EXAT     //设置key过期的Unix时间,单位为秒(正整数)。Unix时间:从1970年1月1日00:00:00开始
PXAT     //设置key过期的Unix时间,单位为毫秒(正整数)。
NX       //仅在key不存在的情况下设置key。
XX       //仅设置已经存在的key。
KEEPTTL //保留与key相关的有效时间。
GET     //返回键值处存储的旧字符串,如果键值不存在,则返回 nil。如果键值不是字符串,将返回错误并中止 

2.2 Hash

Hash类型的value是无序的字典,类似java中的HashMap。
在这里插入图片描述

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
HVALS:获取一个hash类型的key中的所有的value
HINCRBY:让一个hash类型key的字段值自增并指定步长
HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

在这里插入图片描述
在这里插入图片描述

2.3 List

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

LPUSH key  element ... :向列表左侧插入一个或多个元素
LPOP key:移除并返回列表左侧的第一个元素,没有则返回nil
RPUSH key  element ... :向列表右侧插入一个或多个元素
RPOP key:移除并返回列表右侧的第一个元素
LRANGE key star end:返回一段角标范围内的所有元素
LINDEX key index :返回存储在 key 中的列表中位于 index 索引处的元素。正整数表示从头部开始搜索,下标从0开始。负整数表示从末尾开始搜索,下标从-1开始。
LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len] :返回匹配value对应的下标。RANK表示要返回查询到的第几个元素对应的下标,当rank为负数的时候表示从末尾开始查找。
不指定的情况下返回第一个匹配元素的下标。COUNT表示返回count个匹配元素的下标,如果count=0表示返回所有匹配元素的下标。
MAXLEN要匹配的数量最大值。> RPUSH mylist a b c 1 2 3 c c
> LPOS mylist c
2> LPOS mylist c RANK 2
6> LPOS mylist c RANK -1
7> LPOS mylist c COUNT 2
[2,6]> LPOS mylist c RANK -1 COUNT 2
[7,6]> LPOS mylist c COUNT 0
[2,6,7]

在这里插入图片描述
在这里插入图片描述

2.4 Set

Set类型类似java中的HashSet类型,具有以下特点:无序、元素不可重复、查找快、支持交集、并集、差集等功能

SADD key member ... :向set中添加一个或多个元素
SREM key member ... : 移除set中的指定元素
SCARD key: 返回set中元素的个数
SISMEMBER key member:判断一个元素是否存在于set中
SMEMBERS:获取set中的所有元素
SINTER key1 key2 ... :求key1与key2的交集
SDIFF key1 key2 ... :求key1与key2的差集,如果有key2 key3 那么就是key1与key2 key3并集的差集
SUNION key1 key2 ..:求key1和key2的并集

在这里插入图片描述

在这里插入图片描述

2.5 SortedSet

SortedSet是可排序的Set。具有以下特点:可排序、元素不可重复、查询速度快

  • 注意:所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可
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范围内的元素
ZDIFFZINTERZUNION:求差集、交集、并集

3. SpringDataRedis

3.1 简介

SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis

  • 提供了对不同Redis客户端的整合(Lettuce和Jedis)
  • 提供了RedisTemplate统一API来操作Redis
  • 支持Redis的发布订阅模型
  • 支持Redis哨兵和Redis集群
  • 支持基于Lettuce的响应式编程
  • 支持基于JDK、JSON、字符串、Spring对象的数据序列化及反序列化
  • 支持基于Redis的JDKCollection实现

在这里插入图片描述

3.2 快速代码示例

# 配置
spring:data:redis:port: 6379password: 123456host: 192.168.178.128lettuce:pool:max-active: 8 #最大连接max-idle: 8  #最大空闲连接min-idle: 0 # 最小空闲连接max-wait: 10 # 最大连接等待时间
//测试
@SpringBootTest
class SpringDataRedisApplicationTests {@Autowiredprivate RedisTemplate redisTemplate;@Testvoid RedisTest() {redisTemplate.opsForHash().put("key","hashkey","hashvalue");Object hashValue = redisTemplate.opsForHash().get("key", "hashkey");System.out.println("hashValue: "+hashValue);}
}

3.3 序列化

RedisTemplate可以接收任意Object作为值写入Redis,只不过写入和读取时会把Object序列化为字节形式,默认是采用JDK序列化,得到的结果如下 导致可读性差

在这里插入图片描述
解决方案:统一使用String序列化器,要求只能存储String类型的key和value。当需要存储Java对象时,手动完成对象的序列化和反序列化

@SpringBootTest
class SpringDataRedisApplicationTests {@Autowiredprivate StringRedisTemplate stringRedisTemplate;private static  final ObjectMapper mapper=new ObjectMapper();@Testvoid StringTest() throws IOException {//准备对象User tom = new User("tom", 10);//手动序列化String userStr = mapper.writeValueAsString(tom);//写入数据到redisstringRedisTemplate.opsForValue().set("userKey",userStr);//读取数据String userValue = stringRedisTemplate.opsForValue().get("userKey");//反序列化User user = mapper.readValue(userValue, User.class);System.out.println(user);}
}

在这里插入图片描述

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

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

相关文章

React——react 的基本使用

前提:安装全局的脚手架,通过create-creat-app 项目名,我们创建好一个新项目,cd进去,通过npm start去运行该项目 注意:简单看下demo的配置,在根目录我们可以看到,没有任何webpack的…

SpringCloudGateway之统一鉴权篇

SpringCloudGateway之统一鉴权篇 SpringCloudGateway实现统一鉴权的方式 基于JWT(JSON Web Token) 在客户端登录成功后,服务端生成一个包含用户信息和过期时间等数据的JWT令牌返回给客户端。 客户端在后续请求中将此令牌放在请求头&#xf…

rviz上不显示机器人模型(模型只有白色)

文档中的是base_footprint,需要根据自己所设的坐标系更改,我的改为base_link 如何查看自己设的坐标系: 这些parent父坐标系就是 同时打开rviz后需要更改成base_link

Linux——使用Keepalived实现DHCP服务的高可用

前言 Keepalived是一个用于实现高可用性的开源工具,主要用于实现基于VRRP协议的负载均衡和故障转移功能。它可以通过检测节点的健康状况,并自动切换到备份节点来确保服务的高可用性。 Keepalived支持多种检测方式,如ping、TCP连接等&#x…

20232831 2023-2024-2 《网络攻防实践》第2次作业

目录 20232831 2023-2024-2 《网络攻防实践》第2次作业1.实验内容2.实验过程3.学习中遇到的问题及解决4.学习感悟、思考等参考资料 20232831 2023-2024-2 《网络攻防实践》第2次作业 1.实验内容 (1)从www.csdn.net、www.163.com等中选择一个DNS域名进行…

结构设计模式 - 组合设计模式 - JAVA

组合设计模式 一. 介绍二.代码示例2.1 定义Component2.2 定义Leaf2.3 定义Composite 三. 参考案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 一. 介绍 由不同的对象组合成一个…

[嵌入式系统-39]:龙芯1B 开发学习套件 -9-PMON的文件结构

目录 前言: 一、PMON-V1.1 目录结构 二、Targets目录的组成 前言: 参考:​​​​​​龙芯相关 - 心映真的空间 一、PMON-V1.1 目录结构 PMON-V1.1 目录结构 pmon的目录结构大致如下(由linux工具tree生成) |-- Tar…

OSI(Open Systems Interconnection)模型和TCP/IP模型

OSI模型 OSI模型是一个概念模型,由国际标准化组织(ISO)在1984年提出,用于促进不同系统间的通信互联。OSI模型将网络通信的过程分为七层,每一层都有其特定的功能,从下至上依次是: 物理层&#x…

【机器学习智能硬件开发全解】(四)—— 政安晨:嵌入式系统基本素养【后摩尔时代】

随着物联网、大数据、人工智能时代的到来,海量的数据分析、大量复杂的运算对CPU的算力要求越来越高。 CPU内部的大部分资源用于缓存和逻辑控制,适合运行具有分支跳转、逻辑复杂、数据结构不规则、递归等特点的串行程序。 在集成电路工艺制程将要达到极…

CMake 脚本命令(Scripting Commands)之find_package

使用find_package引入外部依赖包 本章节通过示例演示Cmake中find_package的用法。 注:所有教程均在linux系统下测试通过,如果是windows和mac系统,可能会出现错误,需要自行调试修改 通过Cmake内置模块引入依赖包 为了方便我们在…

Todesk与向日葵:哪款远程工具更胜一筹?

在数字化时代,远程工具已成为许多个人和企业不可或缺的一部分。其中,Todesk和向日葵是两款备受瞩目的远程桌面软件。它们各自拥有独特的功能和优势,但究竟哪一款更适合您的需求呢?本文将从稳定性、易用性、价格和安全性等方面对这…

一个H5页面中直接使用React的示例与说明

示例 如题&#xff0c;下面的个简单代码示例—在H5页面中直接使用React <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…

Pytorch从零开始实战21

Pytorch从零开始实战——Pix2Pix理论与实战 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——Pix2Pix理论与实战内容介绍数据集加载模型实现开始训练总结 内容介绍 Pix2Pix是一种用于用于图像翻译的通用框架&#xff0c;即图像到图像的转换。…

【数学】【计算几何】1453. 圆形靶内的最大飞镖数量

作者推荐 视频算法专题 本文涉及知识点 数学 计算几何 LeetCoce:1453. 圆形靶内的最大飞镖数量 Alice 向一面非常大的墙上掷出 n 支飞镖。给你一个数组 darts &#xff0c;其中 darts[i] [xi, yi] 表示 Alice 掷出的第 i 支飞镖落在墙上的位置。 Bob 知道墙上所有 n 支飞…

【Maven 加速 下载】使用 | 阿里云 Maven 中央仓库

阿里云 Maven 中央仓库: 是 阿里云云效 提供的公共代理仓库。 优势: 相比于 Maven 中央仓库,下载更快,更稳定。 仓库地址: 仓库名称阿里云仓库地址阿里云仓库地址(老版)源地址centralhttps://maven.aliyun.com/repository/centralhttps://maven.aliyun.com/nexus/content/…

分布式之网关Gateway

Spring Cloud Gateway 1、网关简介 网关作为流量的入口&#xff0c;常用的功能包括路由转发&#xff0c;权限校验&#xff0c;限流等。 2、Gateway简介 Spring Cloud Gateway 是Spring Cloud官方推出的第二代网关框架&#xff0c;定位于取代 Netflix Zuul。相比 Zuul 来说&…

抖音在线点赞任务发布接单运营平台PHP网站源码

源码简介 抖音在线点赞任务发布接单运营平台PHP网站源码 多个支付通道分级会员制度 介绍&#xff1a; 1、三级代理裂变&#xff0c;静态返佣/动态返佣均可设置。&#xff08;烧伤制度&#xff09;。 2、邀请二维码接入防红跳转。 3、自动机器人做任务&#xff0c;任务时间…

【安卓与苹果区别】详细讲解

安卓和苹果 安卓(Android)和苹果(Apple)在移动操作系统和智能手机市场是两个主要的竞争对手。这里的“苹果”指的是苹果公司设计的iOS操作系统以及苹果自己生产的iPhone手机&#xff0c;而“安卓”是指谷歌开发的Android操作系统&#xff0c;它被多个手机制造商用于他们的设备…

软考高级:信息系统分类-业务处理系统(TPS)概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

创新发展,探索智慧园区平台架构设计与实现

随着信息技术的快速发展&#xff0c;智慧园区平台作为集成物联网、大数据、人工智能等技术的综合性服务平台&#xff0c;正逐步成为推动企业数字化转型的重要驱动力。本文将深入探讨智慧园区平台的架构设计思路、关键技术和应用场景&#xff0c;助力读者了解如何打造智慧化、协…