redis 基础

news2025/4/10 14:22:38

Redis学习笔记

  • 配置文件
      • 启动redis
      • 与redis进行交互
  • redis命令
    • Redis通用命令
      • keys 查看所有符合模板的key
      • type 查看这个key的存储类型![在这里插入图片描述](https://img-blog.csdnimg.cn/175e3a5c1b064ce09b9b47cc1c7b34f9.png)
      • del 删除一个key
      • exists 判断一个Key是否存在
      • ttl 查看一个key的有效期
      • expire 给一个key设置有效期
    • String 类型命令
      • set 给字段设置值![在这里插入图片描述](https://img-blog.csdnimg.cn/62130966fa8a42f89804e6b38a889312.png)### MSET 批量设置值![在这里插入图片描述](https://img-blog.csdnimg.cn/f23d20f63bad4e85bb6cf58ad88aa6bc.png)
      • get 获取key的值 mget批量获取key的值
      • incr 让一个整形的key自增1
      • incrby 让一个整形的Key自增指定的步长
      • incrByFloat 让一个浮点型的key自增指定的步长
      • setnx 如果key不存在则设置key的值
      • setex 设置key的值和过期时间
    • Hash类型
      • hset 设置hash类型的属性值
      • hget 获取一个hash属性值![在这里插入图片描述](https://img-blog.csdnimg.cn/81b5e7f537e44fcc9135108b572c108d.png)
      • hmset 同时 设置多个hash属性值
      • hmget 同时获取多个hash属性值
      • hkeys 获取hash的所有属性
      • hvals 获取hash所有的属性值
      • hgetAll 获取hash所有的属性和属性值
      • hincrby 让一个整形hash属性自增指定的步长
      • hincrbyfloat 让一个浮点型hash属性自增指定步长
      • hdel 删除一个或多个hash属性
      • hlen 获取hash包含多少个属性
      • hsetnx 如果hash中的属性不存在才执行,否则不执行
      • hstrlen 获取hash属性值的长度
    • List类型
      • rpush 从list的右边插入一个或多个元素
      • lpush 从list 的左边插入一个或多个元素
      • lrang 返回角标范围内的元素
      • lpop 返回并删除第一个或多个元素
      • RPOP 返回并删除最后一个或多个元素
      • LINDEX 获取索引下标的元素![在这里插入图片描述](https://img-blog.csdnimg.cn/ab228ad3d42944699faff22be4f059fc.png)
      • linsert 向指定的元素前面或后面插入元素
      • llen list中包含多少元素
      • lpushx 仅当list存在时才向list左边插入一个或多个元素。Rpushx是向右边插入元素
      • LREM 删除元素
    • Set 类型
      • sadd 向集合中插入一个或多个元素
      • scard 获取集合元素的个数
      • smembers 获取集合中所有的元素
      • sismember 判断元素是否是集合中的元素
      • smismember 依次判断多个元素是否是集合中的元素
      • srem 从集合中删除指定的元素
      • srandmember 从集合中随机返回一个或多个元素
      • sinter 返回多个集合之间的交集
      • sunion 返回多个集合之间的并集,无重复的并集
      • sdiff 返回多个集合之间的差集
    • SortedSet 类型
    • SpringBoot 整合Redis
      • 依赖包
      • 配置文件
      • RedisTemplate模板
      • 测试

配置文件

  1. 修改配置文件
    在这里插入图片描述
  2. 修改一下配置
// 监听地址,默认是127.0.0.1只能本地进行访问。修改成指定地址可以访问,0.0.0.0是任意地址都可访问
bind 0.0.0.0
// 守护进行 修改成yes即可后台运行
daemonize yes
// 需要密码登录
requirepass 123456
  1. 其他配置
// 监听端口
port 6379
// 工作目录,默认是当前目录,也就是redis-server存放的目录,日志,持久化文件会保存在这个目录
dir ./
// 数据库数量,设置为2,代表只是用2个库,默认有16个库,编号0~15
databases 2
// 设置redis能够使用的最大内存
maxmemory 512mb
// 日志文件,默认为空,不吉利日志,可以指定日志文件名
logfile "redis.log"

启动redis

1.前台启动 redis-server在这里插入图片描述

  1. 基于配置文件启动 redis-service /usr/local/redis-6.2.1/redis.cnf
    在这里插入图片描述
    通过图片我们可以看到redis进程

与redis进行交互

  • 通过redis自带的命令行客户端进行交互
redis-cli [options] 

其中常见options有

  • -h 127.0.0.1:指定要连接的redis节点ip地址,默认是127.0.0.1
  • -p 6379:指定要连接redis节点的端口号,默认是6379
  • -a 123456:指定访问redis的密码

在这里插入图片描述
当我们看到PONG是代表已经完成redis的链接,可以正常交互了

redis命令

Redis通用命令

1.select index :选择指定数据库

// 选择0号数据库
select 0
// 选择3号数据库
select 3

keys 查看所有符合模板的key

- keys h?llo  匹配:hallo和hello
- keys h*llo 	匹配:hllo 和 heeeello

type 查看这个key的存储类型在这里插入图片描述

del 删除一个key

在这里插入图片描述

exists 判断一个Key是否存在

在这里插入图片描述

ttl 查看一个key的有效期

在这里插入图片描述

expire 给一个key设置有效期

给一个key设置有效期,有效期到期时该key会被自动删除
在这里插入图片描述

String 类型命令

String类型其Value是字符串,最大长度不可超过512M,根据字符串的格式不同又可以分为三类

  • string: 普通字符串
  • int:整数类型,可以做自增,自减操作
  • float:浮点类型,可以做自增,自减操作

set 给字段设置值在这里插入图片描述### MSET 批量设置值在这里插入图片描述

get 获取key的值 mget批量获取key的值

在这里插入图片描述

incr 让一个整形的key自增1

在这里插入图片描述

incrby 让一个整形的Key自增指定的步长

在这里插入图片描述

incrByFloat 让一个浮点型的key自增指定的步长

在这里插入图片描述

setnx 如果key不存在则设置key的值

在这里插入图片描述

setex 设置key的值和过期时间

在这里插入图片描述

Hash类型

hset 设置hash类型的属性值

在这里插入图片描述

hget 获取一个hash属性值在这里插入图片描述

hmset 同时 设置多个hash属性值

在这里插入图片描述

hmget 同时获取多个hash属性值

在这里插入图片描述

hkeys 获取hash的所有属性

在这里插入图片描述

hvals 获取hash所有的属性值

在这里插入图片描述

hgetAll 获取hash所有的属性和属性值

在这里插入图片描述

hincrby 让一个整形hash属性自增指定的步长

在这里插入图片描述

hincrbyfloat 让一个浮点型hash属性自增指定步长

在这里插入图片描述

hdel 删除一个或多个hash属性

在这里插入图片描述

hlen 获取hash包含多少个属性

在这里插入图片描述

hsetnx 如果hash中的属性不存在才执行,否则不执行

在这里插入图片描述

hstrlen 获取hash属性值的长度

在这里插入图片描述

List类型

rpush 从list的右边插入一个或多个元素

在这里插入图片描述

lpush 从list 的左边插入一个或多个元素

在这里插入图片描述

lrang 返回角标范围内的元素

在这里插入图片描述

lpop 返回并删除第一个或多个元素

在这里插入图片描述

RPOP 返回并删除最后一个或多个元素

在这里插入图片描述

LINDEX 获取索引下标的元素在这里插入图片描述

linsert 向指定的元素前面或后面插入元素

在这里插入图片描述

llen list中包含多少元素

在这里插入图片描述

lpushx 仅当list存在时才向list左边插入一个或多个元素。Rpushx是向右边插入元素

在这里插入图片描述

LREM 删除元素

语法

lREM key count element
  1. count>0:从头开始删除 删除count个等于element元素
  2. count =0 删除原有等于element的元素
  3. count < 从右边删除count个等于element的元素
    在这里插入图片描述

Set 类型

sadd 向集合中插入一个或多个元素

在这里插入图片描述

scard 获取集合元素的个数

在这里插入图片描述

smembers 获取集合中所有的元素

在这里插入图片描述

sismember 判断元素是否是集合中的元素

在这里插入图片描述

smismember 依次判断多个元素是否是集合中的元素

在这里插入图片描述

srem 从集合中删除指定的元素

在这里插入图片描述

srandmember 从集合中随机返回一个或多个元素

在这里插入图片描述

sinter 返回多个集合之间的交集

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SINTER key1 key2 key3 = {c}

sunion 返回多个集合之间的并集,无重复的并集

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SUNION key1 key2 key3 = {a,b,c,d,e}

sdiff 返回多个集合之间的差集

key1 = {a,b,c,d}
key2 = {b,c,e}
SDIFF key1 key2 = {a,d}


key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SDIFF key1 key2 key3 = {b,d}

SortedSet 类型

SpringBoot 整合Redis

依赖包

 	implementation 'org.springframework.boot:spring-boot-starter-data-redis'
    implementation 'com.fasterxml.jackson.core:jackson-databind'
    implementation 'org.apache.commons:commons-pool2'

配置文件

spring:
  redis:
    host: 106.14.222.244
    port: 6379
    password: 123456
    connect-timeout: 1000
    lettuce:
      pool:
        max-active: 8
        max-idle: 4
        min-idle: 2
        max-wait: 1000

RedisTemplate模板


@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String,Object> getRedisTemplate(RedisConnectionFactory factory)
    {
        //创建redisTemplate
        RedisTemplate<String,Object> template = new RedisTemplate<>();
        //设置连接工厂
        template.setConnectionFactory(factory);
        //创建Json解析
        Jackson2JsonRedisSerializer<?> jsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance);
        jsonRedisSerializer.setObjectMapper(om);
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
		//设置序列化
        template.setKeySerializer(stringRedisSerializer);
        template.setHashKeySerializer(stringRedisSerializer);
        template.setValueSerializer(jsonRedisSerializer);
        template.setHashValueSerializer(jsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}

测试

@SpringBootTest
class RedisDemoApplicationTests {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    @Test
    void contextLoads() {
        redisTemplate.opsForValue().set("name","王五");
        redisTemplate.opsForValue().set("user:200", new User("冯家振", 21));
    }

    @Test
    void testHash() {
        Map<String, Object> map = new HashMap<>();
        map.put("name","冯家振");
        map.put("age", 12);
        map.put("sex", "男");
        redisTemplate.opsForHash().putAll("myHash", map);
        Map<Object, Object> myHash = redisTemplate.opsForHash().entries("myHash");
        for (Object key : myHash.keySet()) {
            System.out.println(key + "  " + myHash.get(key));
        }
    }

}

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

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

相关文章

HummerRisk V0.8.0:新增金山云、K8s基准检测、源IP审计分析等

HummerRisk V0.8.0发布&#xff1a;多云检测支持金山云、K8s检测新增CIS Benchmark 功能 、操作审计增加源 IP 分析功能、主机检测增加Linux 检测规则。同时优化 operator及Benchmark 的自动/手动安装&#xff0c;优化多个结果展示页面等。 感谢社区中小伙伴们的反馈&#xff…

整型常量不同进制间的相互转换

整型常量可以分别用二进制、八进制、十进制和十六进制表示&#xff0c;不同的进制并不影响数据本身的大小&#xff0c;同一个整型常量可以在不同进制之间转换&#xff0c;具体转换方式如下。 1.十进制和二进制之间的转换 (1)十进制转二进制 十进制转换成二进制就是一个除以2…

实验用试剂mPEG-PDLLA介绍;甲氧基聚乙二醇-聚DL-丙交酯 嵌段共聚物

PLA-MPEG、peg-pla、mPEG-PDLLA 甲氧基聚乙二醇-聚乳酸、甲氧基聚乙二醇-聚DL-丙交酯 结构式&#xff1a; 【详情】 化学式&#xff1a;CH3(C2H4O)m (C6H10O2)n 溶剂&#xff1a;氯仿、二氯甲烷、丙酮、DMF、DMSO等有机溶剂。 性状&#xff1a;半固体或固体&a…

【C++核心编程】C++全栈体系(八)

C核心编程 第四章 类和对象 C面向对象的三大特性为&#xff1a;封装、继承、多态 C认为万事万物都皆为对象&#xff0c;对象上有其属性和行为 例如&#xff1a; ​ 人可以作为对象&#xff0c;属性有姓名、年龄、身高、体重…&#xff0c;行为有走、跑、跳、吃饭、唱歌… …

数据采集网关对接MySQL数据库

数据采集网关嵌入式 ARM 控制器 BL301/BL302支持 MySQL、InfluDB、SQLite 等数据库。Mysql 支持 5.1.51~5.1.73 版本。 将编译好的文件拷贝到 BL302 的/usr/local/mysql 目录下&#xff0c;将里面的可执行文件复制 到/usr/sbin 目录下或者在设备上设置环境变量 export PATH&quo…

Mentor-dft 学习笔记 day51-State Stability Examples

State Stability Examples 以下为包含状态稳定性报告的示例&#xff0c;显示了状态稳定性分析中的不同行为。示例基于图B-1所示的设计。该设计具有以下三个时钟&#xff1a;• clk1— The only scan clock • clk2— Clocks a particular non-scan flip-flop • reset— Resets…

燕山大学软件学院硕士研究生指导教师情况

燕山大学信息科学与工程学院&#xff08;软件学院&#xff09;简介 燕山大学信息科学与工程学院源于东北重型机械学院自动控制系&#xff0c;始建于 1960 年。1983 年&#xff0c;无线电技术、计算机及应用两个专业脱离自动控制系&#xff0c;于东北重型机械学院组建计算机 工…

Java中的.length与.length()

目录一. .length1. .length究竟有多长&#xff1f;2. 为什么会有.length呢&#xff1f;3. 二维数组的创建方法4. 数组是对象二. .length()1. .length()怎么用呢&#xff1f;2. char数组怎么转换为String3. String怎么转换为char数组三. 对比1. 为什么数组不像String&#xff0c…

【 uniapp - 黑马优购 | 商品详情 】详情页UI结构设计、商品导航区域实现

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生&#xff0c;讨厌编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;小新爱学习. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc…

SVN使用教程

SVN使用教程 常见图标状态 1、常规&#xff1a;绿色圈带白色对勾&#xff0c;主要是表示自己电脑上的文件或者文件夹与SVN服务器上对应的文件一致&#xff0c;在自己电脑没有进行任何修改。 2、修改&#xff1a;红色圈带白色感叹号&#xff0c;当你开始编辑一个文件&#xff…

C语言实现笛卡尔树

先来回顾一下笛卡尔树的性质&#xff1a;笛卡尔树是这样一个二叉树&#xff0c;它能保持原序列的先后顺序&#xff0c;并且具备堆的性质。这里假设序列中无相等元素。假设有一个序列{9&#xff0c;3&#xff0c;7&#xff0c;1&#xff0c;8&#xff0c;12&#xff0c;10&#…

GitLab入门

极狐GitLab gitlab实现⾃动部署的原理1、部署机上&#xff0c;需要安装插件 gitlab-runner2、部署机安装 gitlab-runner之后&#xff0c;向gitlab服务器注册3、gitlab服务器收到commit事件之后&#xff0c;通知部署机拉取代码&#xff0c;执⾏部署。4、部署机执⾏什么操作&…

pytorch和numpy的互相转换、数学计算公式

格式转换 使用torch.from_numpy() 将numpy的array转化为torch的张量。 结果如下&#xff1a; 而把张量转为numpy的数组&#xff1a;tensor2array torch_data.numpy() 计算绝对值 torch.abs() data [-1,-2&#xff0c;1&#xff0c;2] tensor torch.FloatTensor(data) …

HoloLens2 Visible-Light Tracking Camera (VLC) 内参获取

HoloLens2 Visible-Light Tracking Camera&#xff08;VLC&#xff09;内参获取问题描述求解方法总结参考链接问题描述 OpenCV中的许多功能都需要输入相机内参(Camera Intrinsics)。然而&#xff0c;HoloLens2并没有提供直接获取相机内参的API&#xff0c;what is provided is …

初阶指针(详细版)

目录 一、指针是什么 1、内存 2、内存的管理与使用 3、指针变量的使用 二、指针和指针类型 1、指针类型的意义 2、指针 或 - 整数 3、指针解引用 三、野指针 1、野指针成因 2、如何规避野指针 四、指针运算 1、指针-整数 2、指针 - 指针 指针 - 指针的运用…

11_6、Java集合之Map接口(包括HashMap在内的子接口)的使用

一、引入Map与Collection并列存在。用于保存具有映射关系的数据:key-value &#xff08;双列集合框架&#xff09;&#xff0c;Map 中的 key 和 value 都可以是任何引用类型的数据 。Map 中的 key 用Set来存放&#xff0c;不允许重复&#xff0c;即同一个 Map 对象所对应 的类&…

Android Studio生成自己的so库

一、创建Native项目 1、新建 Native 项目 1&#xff09;新建项目 选择最下面的 Native C 下一步即可 2&#xff09;填写项目信息 3&#xff09;选择C版本可以直接选择默认 2、下载并配置NDK及CMake 1&#xff09;进入Studio 设置 SDK 设置界面 这里选择需要的 NDK 和 CMake…

c++之 OpenGL(1)-安装与概述

目录概述&#xff46;&#xff45;&#xff44;&#xff4f;&#xff52;&#xff41;下安装编写OpenGL应用程序测试hello,world概述 OpenGL&#xff08;英语&#xff1a;Open Graphics Library&#xff0c;译名&#xff1a;开放图形库或者“开放式图形库”&#xff09;是用于…

Linux开发工具的使用(一)

文章目录Linux开发工具的使用&#xff08;一&#xff09;1. Linux软件包管理器yum1.1 查看软件1.2 下载软件1.3 卸载软件2.vim编辑器的介绍和使用2.1 vim的介绍2.2 vim的基本操作2.3 vim命令模式命令集(必须是命令模式下)2.3.1 移动光标2.3.2 删除文字2.3.3 复制文本内容2.3.4 …

C++ 不知树系列之二叉堆排序(递归和非递归实现上沉、下沉算法)

1. 前言 什么是二叉堆&#xff1f; 二叉堆是有序的 完全二叉树&#xff0c;在完全二叉树的基础上&#xff0c;二叉堆 提供了有序性特征&#xff1a; 二叉堆 的根结点上的值是整个堆中的最小值或最大值。 当根结点上的值是整个堆结构中的最小值时&#xff0c;此堆称为最小堆。…