Redis基本操作及使用

📑前言

本文主要是【Redis】——Redis基本操作及使用的文章,如果有什么需要改进的地方还请大佬指出⛺️

🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:CSDN主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见


目录

    • 📑前言
  • Redis基本操作及使用
    • 什么是Redis
      • 关系型数据库和非关系数据库的区别
    • 全局key操作
      • 查看所有的key
      • 删除
      • 查看key是否存在,存在返回1,不存在返回0
      • 查看key类型
      • 运算
    • Redis五种数据类型及操作
        • value :都是字符串类型的(可加引号也可不加)
    • string
      • 设置
      • 获取
      • 查看过期时间
      • 设置过期时间
      • 追加
        • redis里面所有的value,都是字符串类型的
      • 设置/获取 多个
    • list
      • 添加
      • 查看
      • 获得list的元素个数
      • 设置,修改数据
      • 删除
    • hash
      • 设置
      • 获取
      • 删除
      • 获取全部field value
      • 获取所有的field
      • 获取所有的value
      • 获取field的个数
    • set集合
            • 设置
            • 获取
            • 删除
            • 移动一个集合的值到另一个集合
            • 判断集合存在某个值
            • 交集
            • 并集
            • 差集
    • zset
            • 设置
            • 获取
            • 删除
            • 索引
            • zcard 查看有序集合元素数
            • zrangebyscore 返回集合中 score 在给定区间的元素
            • zcount 返回集合中 score 在给定区间的数量
            • zscore : 查看score值
            • zremrangebyrank : 删除集合中排名在给定区间的元素(正向)
            • zremrangebyscore : 删除集合中 score 在给定区间的元素
    • Redis发布和订阅
    • 📑文章末尾

Redis基本操作及使用

什么是Redis

Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。

redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,还提供了多个语言的API,操作比较方便

  • Redis特点:
    Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
  • Redis应用场景:
    因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
    将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

关系型数据库和非关系数据库的区别

  • 关系型数据库
    表和表之间存在的关系
  • 非关系型数据库
    不存在表的这种概念,redis是键值对数据库,通过key查找value 所以key是唯一的。

全局key操作

  • 对redis五个数据类型都适用的命令

查看所有的key

keys *
keys n*

删除

del key   例: (del name)

查看key是否存在,存在返回1,不存在返回0

exists key

查看key类型

type key

运算

    set num 1    # 自动识别,字符串里面的 整数# +1incr key(incr num)# -1decr key(decr num)# +整数incrby key increment              例 (incrby num 50)# -整数decrby key increment              例 (decrby num 50)

Redis五种数据类型及操作

  • string 字符串
  • list 列表
  • hash 哈希
  • set 集合
  • sorted sets 有序集合

key 有5种数据类型:string、list、set、zset(sorted set)、hash。

value :都是字符串类型的(可加引号也可不加)

string

string是redis最基本的类型,一个key对应一个value

设置

set key value 例:(set name 'ppx')

获取

get key       例:(get name)
# key是唯一的,不能用同一个key 不然就会覆盖

查看过期时间

# -1表示永久 -2表示 不存在
ttl key       例:  (ttl name)  

设置过期时间

# 给已经存在的key ,设置过期时间
expire key seconds   例:  (expire name 20)#设置key的同时,设置过期时间
set key value ex seconds   例: (set age 18 ex 20)
或
setex key seconds value    例:(setex sex 20 '男')

追加

# 给已有的value,再添加新的值
# append key value
例
append name love
#get name
redis里面所有的value,都是字符串类型的

设置/获取 多个

# 设置多个 string
mset key value key value ...#获取多个
mget key key key ...
例
mget username password name

list

  • List类型是一个字符串列表,可以在列头或列尾添加/删除数据,在插入数据时,如果该键不存在,redis将为该键创建一个。

添加

#lpush 左添加 (栈) 先进后出
lpush key value      #例:  lpush  mylist a b c d#rpush 右添加 (队列)
rpush key value      #例:  rpush  mylist a b c d

查看

# lrange key start stop  ,查看索引范围内元素的值
例  查看所有
lrange mylist 0 -1#查看位与lindex位置上的元素, 返回列表中元素的值。index从0开始,当index超出索引时返回null
lindex  key  index   #例: lindex mylist 3

获得list的元素个数

llen key  #例  llen mylist

设置,修改数据

#指定索引号进行修改
lset key index value

删除

  - lpop 删除左边第一个lpop key        #例 lpop  my_rlist- rpop 删除右边第一个rpop key        #例 rpop  my_list
- lrem 删除指定rpush  test_list  a a b b c d e a d f m c#lrem  key count  value#count > 0 从左往右 删除数量为count的value例 : lrem test_list 2 a#count = 0 删除所有的 value例 : lrem test_list 0 a#count < 0 从右往左 删除数量为count的value例 : lrem test_list -1 b

hash

  • 是一个键值(key=>value)对集合。是string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象, field 域, value 值

设置

      #  hset key field value#将field-value设置到hash表中,若key不存在会新建hash表再赋值,已存在则会覆盖;user { name:jianeng}hset user name jianeng#设置多个#hmset key field value [field value]user{name:jianeng , age:18, sex:male }hmset user name jianeng age 18 sex male

获取

      #  hget key field例hget user name#获取多个# hmget key field field例hmget user name age

删除

      #  hdel key field例hdel user name

获取全部field value

      # hgetall key 例     itmeshgetall user

获取所有的field

      # hkeys keykeyshkeys user

获取所有的value

      # hvals key values  hvals user

获取field的个数

      # hlen key例    hlen user

set集合

  • 元素为string类型
  • 无序集合
  • 元素具有唯一性,不重复
设置
  # sadd key value [value]    (唯一,无序)#将一个或多个member元素加入到集合key中,若member已存在那么会忽略此元素,例sadd my_set m n b v c x z b
获取
  # smembers key例smembers my_set
删除
  - srem指定删除# srem key member例srem my_set c- spop随机删除# spop  key例spop my_set
移动一个集合的值到另一个集合
      # smove oldkey newkey member例smove my_set my_set2 z
判断集合存在某个值
      # sismember key value例sismember my_set2 b   
交集
      # sinter key1 key2 ..例sinter my_set my_set2把 key1 key2的交集合并到newkey# sinterstore newkey key1 key2例sinterstore  new_set my_set my_set2
并集
      # sunion key1 key2 ...例sunion my_set my_set2把 key1 key2的并集合并到newkey# sunionstore newkey key1 key2例sunionstore new_set2 my_set my_set2
差集
      # sdiff key1 key2sdiff my_set my_set2把 key1 key2的差集合并到newkey# sdiffstore newkey key1 key2例sdiffstore new_set3 my_set my_set2
- 获取集合个数# scard key例scard my_set
- 随机返回一个# srandmember key例srandmember my_set

zset

类似于Set,不同的是Sorted中的每个成员都分配了一个分数(Score)用于对其中的成员进行排序(升序)。
zset的成员是唯一的,但分数(score)却可以重复。

设置
      # zadd key score member例zadd  my_zset 1 'one'zadd  my_zset 2 'two'zadd  my_zset 3 'three'zadd  my_zset 4 'four'zadd  my_zset 5 'five'
获取
  - zrange正序#zrange key start stop    (withscores)zrange my_zset 0 -1  withscores- zrevrange倒序#zrevrange key start stopzrevrange my_zset 0 -1  withscores
删除
      #zrem key memberzrem my_zset two
索引
  - zrank正序# zrank key member例zrank my_zset three- zrevrank反序# zrevrank key member例zrevrank my_zset three
zcard 查看有序集合元素数
      # zcard key例zcard my_zset
zrangebyscore 返回集合中 score 在给定区间的元素
      # zrange my_zset 0 -1 withscoreszrangebyscore my_zset 2 3 withscores#返回了 score 在 2~3 区间的元素
zcount 返回集合中 score 在给定区间的数量
      # zcount key min max例zcount my_zset 2 3
zscore : 查看score值
      # zscore key member例zscore my_zset two
zremrangebyrank : 删除集合中排名在给定区间的元素(正向)
      # zrange my_zset 0 -1 withscoreszremrangebyrank my_zset 1 3
zremrangebyscore : 删除集合中 score 在给定区间的元素
      # zrange my_zset 0 -1 withscoreszremrangebyscore my_zset 3 5

Redis发布和订阅

#发布 
publish 频道 消息# 订阅
subscribe 频道

📑文章末尾

在这里插入图片描述

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

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

相关文章

Spring Boot 3 + Spring Security 6 最新版本修改 Json 登录后 RememberMe 功能问题失效的解决方案

当 Spring Boot 版本更新到 3 之后&#xff0c;最低要求的 JDK 版本变为 17&#xff0c;相应的 最新版本的 Spring Security 的配置也发生了变化&#xff0c;一下主要讲解一些新的 Spring Security 的配置方法 1. 配置由继承WebSeucrityConfigurerAdapter变成只需添加一个Secur…

蓝桥杯第一天-----时间显示

文章目录 前言一、题目描述二、测试用例三、题目分析四、具体代码实现总结 前言 本章中将相信介绍蓝桥杯中关于时间显示的题目。 链接&#xff1a;https://www.lanqiao.cn/problems/1452/learning/ 一、题目描述 二、测试用例 三、题目分析 1.输入的时间为毫秒&#xff0c;毫…

2020年6月15日 Go生态洞察:pkg.go.dev开源探索

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

接口01-Java

接口-Java 一、引入(快速入门案例)二、接口介绍1、概念2、语法 三、应用场景四、接口使用注意事项五、练习题1 一、引入(快速入门案例) usb插槽就是现实中的接口。 你可以把手机、相机、u盘都插在usb插槽上&#xff0c;而不用担心那个插槽是专门插哪个的&#xff0c;原因是做u…

深入理解虚拟 DOM:提升前端性能的关键技术

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【3D程序软件】SideFX与上海道宁一直为设计师提供程序化 3D动画和视觉效果工具,旨在创造高质量的电影效果

Houdini是一个 从头开始构建的程序系统 使艺术家能够自由工作 创建多次迭代 并与同事快速共享工作流程 Houdini FX为 视觉特效艺术家创作故事片 广告或视频游戏 凭借其基于程序节点的工作流程 Houdini FX可让 您更快地创建更多内容 从而缩短时间并 在所有创意任务中…

STM32 ADC转换器、串口输出

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ADC是什么&#xff1f;二、STM32的ADC2.1 认识STM32 ADC2.2转换方式2.3 为什么要校准&#xff1f;2.4 采样时间计算2.5 触发方式2.6 多通道采集解决方案2.7…

C++学习之路(十)C++ 用Qt5实现一个工具箱(增加一个时间戳转换功能)- 示例代码拆分讲解

上篇文章&#xff0c;我们用 Qt5 实现了在小工具箱中添加了《JSON数据格式化》功能&#xff0c;还是比较实用的。为了继续丰富我们的工具箱&#xff0c;今天我们就再增加一个平时经常用到的功能吧&#xff0c;就是「 时间戳转换 」功能&#xff0c;而且实现点击按钮后文字进行变…

【计算机网络笔记】以太网

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

Leetcode(面试题 08.01.)三步问题

文章目录 前言一、题目分析二、算法原理1.状态表示2.状态转移方程3.初始化4.填表顺序5.返回值是什么 三、代码实现总结 前言 在本文章中&#xff0c;我们将要详细介绍一下Leetcode(面试题 08.01.)三步问题相关的内容 一、题目分析 1.小孩可以上一阶&#xff0c;两阶&#xff…

数据安全建设的六大关键步骤

随着数字化时代的到来&#xff0c;数据安全已经成为企业和社会组织必须面对的重要问题。数据泄露、网络攻击等安全事件频发&#xff0c;给个人隐私、企业利益和国家安全带来了严重威胁。因此&#xff0c;加强数据安全建设已成为刻不容缓的任务。以下是数据安全建设的六大关键步…

Python hashlib库解析:数据安全加密必备指南

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 哈希函数在计算机科学中扮演着重要的角色。它是一种能够将任意长度的数据转换成固定长度的唯一值的算法。Python提供了hashlib库&#xff0c;用于生成哈希摘要&#xff0c;提供了常见的哈希算法&#xff0c;如MD…