Redis系列学习2-五大类型(String,List,Hash,Set,ZSet)及其常规操作

2023-05-16

Redis的基本操作

Redis默认是有16个数据库,默认使用的是第0个数据库,可以通过select 切换数据库,Redis的命令大小写不敏感的

切换数据库

切换数据库 格式:select index


查看数据库大小

查看数据库大小 格式:dbsize


查看所有的keys

查看所有的key 格式:keys *


清除数据库

清空当前的数据库 格式:flushdb
清空所有的数据库 格式:flushall

clear实现界面的清屏 

如果报错:(error) NOAUTH Authentication required.

说明验证出了问题,重新进行验证即可,方式是输入auth

Redis五种基本类型

Redis键命令的基本语法: COMMAND KEY_NAME

示例如下:

  • SET 设置key
  • GET 查看key对应值
  • EXPIRE 设置key的过期时间
  • TTL 查看key剩余时间
  • EXISTS 判断当前key是否存在
  • KEYS * 查看所有的key
  • DEL 删除当前key
  • TYPE 查看key存储的value类型

1.字符串

应用场景:

计数器(分散数、统计数)

通常来保存单个字符串或者JSON字符串数据(短信验证码)

set get

设置值 格式:set key value

获取值 格式:get key

key值已存在的情况下,set同一key会覆盖掉原值,get一个不存在的key会返回nil 

exists

判断key是否存在 格式 exists key

存在返回1,不存在返回0

append

追加字符串,如果key不存在,相当于是set命令

格式:append key apendvalue

strlen

获取字符串的长度

格式:strlen key

incr decr

对value值进行自增1操作(如果key不存在,会被初始化为0)

格式: incr key

对value值进行自减1操作

格式:decr key

若key不存在,则初始化为0

incrby decrby

设置加减的步长

格式:incrby key num decrby key num

getrange

获取给定范围的字符串值

格式:getrange key start stop

setrange

从指定的位置开始替换字符串的值

格式:setrange key offset value

setex ttl

设置过期时间

格式: setex key seconds values

查看剩余时间

格式:ttl key

setnx

setnx(set if not exists) 如果指定的key不存在则设置,存在的失败

格式: setnx key value

(分布式锁经常使用)

如果key存在,则创建失败。 

mset mget

同时设置多个值

格式:mset key1 value1 key2 value2 ...

同时获取多个值

格式:mget key1 key ...

getset

先获取值在设置值

格式:getset key value

如果原值不存在,则返回nil,若存在先获取值,然后更改新值,其实原理相当于++i的操作。

2、列表 list

类似于linkedlist链表结构,可以添加元素到列表的头部或者是尾部,同样头部和尾部都可以进行获取,可以用来作为栈、队列、阻塞队列

应用场景:

对数据量大的集合进行删减

列表数据显示:评论列表、关注列表、留言列表

lpush rpush lrange

从列表的左侧插入值

格式:lpush key value

从列表的右侧插入值

格式:rpush key value

从列表中获取指定范围的值

格式:lrange key start stop

插入到左边示例:

lpop rpop

从列表的左侧移除值

格式:lpop key

从列表右侧移除值

格式:rpop key

lindex

获取指定下标的值

格式:lindex key index

超过索引的位置就会返回nil

llen

获取列表中元素的个数

格式:llen key

lrem

移除列表中的元素

格式:lrem key count value

ltrim

截取列表中的值

格式:ltrim key start stop

rpoplpush

移除A列表中最后一个元素,将他添加到另一个B列表中

格式:rpoplpush key1 key2

lset

根据下标替换列表中的值

格式:lset key index value

list底层是一个链表,在链表插入或者改动值,效率高,中间位置来修改,相对效率低一些

3、集合 set

set中元素不能重复,唯一的

set实现是基于哈希表结构实现,在修改、添加等操作复杂度是O(1)

应用场景:

利用唯一性:可以统计访问网站的所有独立的ip

对集合间进行求交集、并集、差集 方便实现共同关注,共同喜欢,共同好友

sadd

在set集合中添加数据

格式:sadd key value

添加重复值时就会添加失败

smembers

获取set集合中所有值

格式:smembers key

sismember

判断某个值是否在set中,在返回1,不在返回0

格式:sismember key value

scard

获取set中元素个数

格式:scard key

srem

删除set中元素

格式:srem key value

srandmember

从set中随机获取值

格式:srandmember key count

spop

随机删除指定的元素

格式:spop key [count]

应用:求差集(sdiff),并集(sunion),交集(sinter)

4、哈希 hash

hash是一个map集合,是key-value的map集合

应用场景:

hash中存储经常变更的对象,比如用户信息: user :name-value age-value ,set-value

hash适合存储对象 ,String适合存储字符串

hset hget

插入和获取哈希的值 hset key field value /hget key field

hmset hmget

批量的插入和获取

格式:hmset key field1 value1 field2 value2 ....

获取格式: hmget key field1 field2 ...

hgetall

获取hash中所有的值

格式:hgetalll key

hdel

删除指定的filed 的哈希键值对

格式:hdel key field

hexitsts

判断哈数中字段是否存在,存在返回1,不存在返回0 

格式:hexists key field

hkeys hvals

获取哈数中所有字段或者值

格式 :hkeys key /hvals key

hsetnx

如果存在,则失败,如果不存在,则添加成功

格式:hsetnx key field value

5、有序集合 zset

应用场景:

对于需要排序的场景下可以使用zset. e比如微博的实时新闻可以以发表时间作为score来存储,获取时就自动按时间来排好序

zadd

向有序集合添加一个或多个成员,或者更新已存在成员的分数

格式:zadd key score member...

 zrange

按分数进行排序

格式:zrange key start stop

zrange key start stop withscores (同时显示分数zrange)

zrangebyscore

将zset中的值按照从小到大排序数据

格式 zrangebyscore min max

由负无穷到正无穷进行排序,也就是从小到大进行排序。

zrem

删除zset中指定的元素 格式:zrem key value

zcard

查看zset集合中元素的个数 格式:zcard key

zcount

根据score的值来统计给定区间的元素的个数 格式:zcount key min max

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis系列学习2-五大类型(String,List,Hash,Set,ZSet)及其常规操作 的相关文章

  • PriorityQueue(优先级队列)的解读与底层实现

    目录 1 什么是优先级队列 xff1f 2 优先级队列的特性 3 如何使用优先级队列 4 JDK源码分析 4 1类的继承关系 4 2类的属性 4 3常用的方法 5 自定义优先级队列实现 5 1 优先级队列类定义 5 2 add 方法 5 3
  • HashMap的使用与底层结构剖析

    目录 一 基础概念 二 先使用再了解 三 底层结构 1 HashMap结构 xff08 JDK1 8以前 xff09 2 HashMap结构 xff08 JDK1 8以后 xff09 四 HashMap实现 1 成员变量 2 put实现 3
  • 线程基础与使用测试

    目录 一 进程和线程 二 线程的创建 1 继承Thread类 xff0c 重写run 方法 2 实现Runnable接口 xff0c 重写run方法 3 匿名线程 xff0c 匿名内部类 4 实现Callable接口 xff0c 重写cal
  • 线程生命周期及常用方法的使用

    一 守护线程 守护线程是什么 xff1f 守护线程是一类比较特殊的线程 xff0c 一般用于处理后台的工作 xff0c 比如JDK的垃圾回收线程 守护线程的作用 xff1f JVM xff08 Java Virtual Machine xf
  • git合并被fork的仓库的远程分支

    如果你 fork 了一个仓库并在自己的 forked 仓库中进行了更改 xff0c 而原始仓库也有一些更新 xff0c 此时想将原始仓库的更新合并到你的 forked 仓库 xff0c 可以按照以下步骤 xff1a 1 将原始仓库添加为远程
  • Linux-基础知识及常见操作命令汇总

    目录 1 终端操作 2 命令手册 3 关机重启 4 runlevel 5 目录结构 6 文件属性 7 Linux文件属主和属组 8 目录常用命令 9 VIM命令 10 进程管理命令 1 进程状态 2 ps命令 3 pstree命令 jobs
  • 关键字synchronized与volatile详解

    在多线程并发编程中synchronized和volatile都扮演着重要的角色 xff0c synchronized一直是元老级角色 xff0c 很多人都会称呼它为重量级锁 但是 xff0c 随着Java SE 1 6对synchroniz
  • 迁移学习与Transformer架构

    迁移学习 迁移学习干什么的 xff1f 迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务 Eg xff1a 学习识别苹果可能有助于识别梨 xff0c 学习骑自行车可能有助于学习骑摩托车 xff0c 学习打羽毛球可能有助于学习打网
  • 生产者消费者模型分析与实现

    生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题 生产者和消费者彼此之间不直接通讯 xff0c 而通过阻塞队列来进行通讯 xff0c 所以生产者生产完数据之后不用等待消费者处理 xff0c 直接扔给阻塞队列 xff0c 消费
  • ConcurrentHashMap优点与源码剖析

    哈希表是中非常高效 xff0c 复杂度为O 1 的数据结构 xff0c 在Java开发中 xff0c 我们最常见到最频繁使用的就是HashMap和HashTable xff0c 但是在线程竞争激烈的并发场景中使用都不够合理 HashMap
  • IO-字节流

    文件 amp File类的使用 1 文件的概念 文件可以分为文本文件 二进制文件 2 IO流的概念 流是有顺序 有起点和终点的集合 xff0c 是对数据传输的总称 流的本质就是用来对数据进行操作 IO是我们实现的目的 xff0c 实现这个目
  • STM32F407的TCP编程出现客户端无法连接上服务器,DHCP获取IP失败,服务器重启客户端无法自动重连问题解决方案

    单写一篇文章记录这些问题 xff0c 因为有的问题实在是困扰了我太久太久了 xff0c 终于解决了 xff01 xff01 xff01 1 STM32F407的TCP编程 xff0c TCP SERVER测试完全正常 xff0c TCP C
  • SQL练习汇总(查询“01“课程比“02“课程成绩高的学生的信息及课程分)

    1 学生表 Student SID Sname Sage Ssex SID 学生编号 Sname 学生姓名 Sage 年龄 Ssex 学生性别 编号 姓名 年龄 性别 1 赵雷 20 男 2 钱电 20 男 3 孙风 21 男 4 吴兰 1
  • JDBC编程,SQL注入与连接池

    JDBC概念 JDBC Java Data Base Conection 是java中提供的一套标准的应用编程接口 xff0c 用来连接Java编程语言和数据库 JDBC常用组件 xff1a DriverManger xff1a 数据库驱动
  • Pytorch搭建基于SRCNN图像超分辨率重建模型及论文总结

    SRCNN xff08 Super Resolution Convolutional Neural Network xff09 论文出处 xff1a Learning a Deep Convolutional Network for Ima
  • 技术领域的面试总结

    在当今互联网中 xff0c 虽然互联网行业从业者众多 xff0c 不断崛起的互联网公司也会很多 xff0c 仍然是很多同学想要进入的企业 那么本篇文章将会为大家很直白的讲解面试流程以及侧重点 仔细阅读本篇文章 xff0c 绝对会有所收获 x
  • Mybatis基于XML与基于注解实现CRUD

    数据库 实体类Student package com pojo Description Created by Resumebb Date 2021 3 26 public class Student 和数据库中的STudent表对应 pri
  • Spring-IOC容器进行对象管理

    目录 IOC概念 IOC思想 Spring管理对象 集成依赖 spring的配置文件 xff08 Applicationcontext xml xff09 创建实体类User Spring对Bean的实例化方式 基于配置形式 1 通过无参构
  • Spring-AOP原理及实现

    Spring AOP AOP Aspect Oriented Programing 面向切面编程 xff1a 扩展功能不通过修改源代码实现 AOP采用横向抽取机制 xff0c 取代传统纵向继承体系实现响应的功能 xff08 性能监控 事务
  • Spring&Mybatis整合及Spring中JDBCTemplate的使用

    Spring和Mybatis整合 在mybatis中 xff0c 操作数据库需要获取到SQLSession对象 xff0c 而该对象的实例过程在mybatis是通过SQLSessionFactoryBuilder读取全局配置文件来实例化一个

随机推荐

  • SpringMVC设计模式

    什么是MVC MVC是模型 Model 视图 View 控制器 Controller 的简写 xff0c 是一种软件设计规范 是将业务逻辑 数据 显示分离的方法来组织代码 MVC主要作用是降低了视图与业务逻辑间的双向偶合 MVC不是一种设计
  • SSM框架整合

    整合思路 主要分为Controller xff0c service层 xff0c dao层 整合dao mybatis和spring的整合 xff0c 通过spring来管理mapper接口 xff0c 数据源 xff0c 使用mapper
  • SSM框架实战-搭建自己的个人博客1-基础架构搭建

    前言 本系列文章主要通过从零开始搭建自己的个人博客 xff0c 来加深对SSM框架的学习与使用 xff0c 了解一个系统从提出到设计 到开发 到测试 部署运行的过程 xff0c 并记录在搭建过程中的学习心得 遇见的错误及解决方式 代码放在g
  • SSM框架实战-搭建自己的个人博客2-UEditor编辑器的使用

    目录 UEditor 博客内容提交与展示功能测试 Controller开发 新增博客页面add ueditor jsp 博客详情界面detail jsp 博客新增和展示详情功能开发 博客存储 博客标题开发 标签POJO类 TagMapper
  • SSM框架实战-搭建自己的个人博客3-登录实现及前端界面设计

    目录 后台登录功能 前端页面 后端开发 前端界面设计 详情首页 js脚本 SSM整体设计 Dao层 Service层 Mapper xml Controller 子博文界面 部署至服务器 后台登录功能 登录页面 xff1a 用户名和密码 通
  • 超分辨率重建-PNSR与SSIM的计算(RGB、YUV和YCbCr互转)

    RGB YUV和YCbCr 自己复现的网络跑出来的模型进行预测的时候 xff0c 不知道为啥算出来的结果比论文中要低好多 不论scale factor为多少 xff0c 我算出来的结果均普遍低于论文中给出的 xff0c PSNR大概低个1
  • 如何写简历

    注意点 xff1a 篇幅 校招一页 社招二页 谨慎使用精通 精通 gt 熟悉 xff08 推荐使用 xff09 gt 掌握 xff08 推荐使用 xff09 gt 了解 xff08 推荐使用 xff09 拿不准的不要写在简历上 突出自己技能
  • SSM框架实战-搭建自己的个人博客4-文章管理与展示

    实现功能 主要实现上图所示的功能 xff0c 从数据库中查询到所有文章数据 xff0c 并进行显示如标题 xff0c 栏目等信息 xff0c 可以通过分类查询文章 xff0c 通过标签查询文章 xff0c 也可以通过搜索进行模糊查询 xff
  • Pytorch加载与保存模型(利用pth的参数更新h5预训练模型)

    前言 以前用Keras用惯了 xff0c fit和fit generator真的太好使了 xff0c 模型断电保存搞个checkpoint回调函数就行了 近期使用pytorch进行训练 xff0c 苦于没有类似的回调函数 xff0c 写完网
  • 如何用pyplot优雅的绘制loss,acc,miou,psnr变化曲线

    前言 TensorFlowBoard过于强大 xff0c 导致我对它依赖性很强 xff0c 今年转手使用pytorch进行开发 xff0c 本以为没了TensorFlowBoard xff0c 后来发现人家Tensorflow封装了个Ten
  • Pytorch实现CA,SA,SE注意力机制

    通道注意力CA class ChannelAttention nn Module def init self in planes ratio 61 16 super ChannelAttention self init self avg p
  • Python使用OpenCV按自定义帧率提取视频帧并保存

    在做室外语义分割 视觉导航与定位的时候 xff0c 通常会用对一个连续的视频帧进行测试 xff0c 除去常用数据集外 xff0c 也经常会自己制作一些数据集 xff0c 这个工具类可以按需求对视频进行分帧提取 xff0c 封装好了直接可以使
  • 悲观锁与乐观锁详解

    悲观锁 悲观锁顾名思义是从悲观的角度去思考问题 xff0c 解决问题 它总是会假设当前情况是最坏的情况 xff0c 在每次去拿数据的时候 xff0c 都会认为数据会被别人改变 xff0c 因此在每次进行拿数据操作的时候都会加锁 xff0c
  • 亚像素卷积网络(ESPCN)学习与Pytorch复现

    论文内容 论文地址 xff1a Real Time Single Image and Video Super Resolution Using an Efficient Sub Pixel Convolutional Neural Netw
  • Lock锁和ReentrantLock锁

    前言 JDK 1 5中提供的锁的接口java util concurrent locks Lock xff0c 其提供了一些ReentrantLock ReentrantReadWriteLock实现类 参考JDK文档 xff1a Java
  • 面试题--JVM垃圾回收及内存管理

    选择题 1 以下哪些内存区域属于 JVM 规范 xff1f xff08 xff09 A 方法区 B 实例变量 C 静态变量 D 程序计数器 E 虚拟机栈 正确答案 xff1a A D E 解析 xff1a Java虚拟机规范划分了七个内存区
  • Pytorch维度操作-unsqueeze、squeeze、view与permute

    view 在pytorch中view函数的作用为重构张量的维度 相当于numpy中resize 的功能 a 61 1 2 3 b 61 2 3 4 c 61 3 5 5 d 61 4 5 6 e 61 np array a b c d e
  • 长假余额为零!我用Python做了个中秋国庆双节拼图游戏

    点击上方 菜鸟学Python xff0c 选择 星标 公众号 重磅干货 xff0c 第一时间送达 今年的国庆长假非常长 xff0c 不知不觉已经余额为零 xff01 朋友圈很多晒出游的照片 xff0c 聚会的照片 xff0c 吃吃喝喝真舒服
  • Redis系列学习1-Redis安装启动与基础概念

    Remote Dictionary Server Redis 是一个由 Salvatore Sanfilippo 写的 key value 存储系统 xff0c 是跨平台的非关系型数据库 Redis 是一个开源的使用 ANSI C 语言编写
  • Redis系列学习2-五大类型(String,List,Hash,Set,ZSet)及其常规操作

    Redis的基本操作 Redis默认是有16个数据库 xff0c 默认使用的是第0个数据库 xff0c 可以通过select 切换数据库 xff0c Redis的命令大小写不敏感的 切换数据库 切换数据库 格式 xff1a select i