Redis--苍穹

news2024/11/26 3:39:49

一、Redis入门

1.1、Redis简介

1.2 、redis启动

redis-server redis.windows.conf

1.3、redis连接

  • -h 指定IP
  • -p 指定端口
  • -a 密码
redis-cli.exe -h localhost -p 6379 -a 731206

二、redis数据类型

2.1、redis的五种数据类型

2.2、redis的各种数据类型的特点

三、Redis的常用命令

3.1、字符串操作命令

3.2、哈希操作命令

3.3、列表操作命令

3.4、集合操作命令

3.5、有序集合操作命令

3.6、通用命令

四、在Java程序中操作Redis

4.1、操作步骤说明

4.1.1、Redis的Java客户端

4.2.2、Spring Data Redis 使用方式

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.RedisConnectionFailureException;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
@Slf4j
public class RedisConfiguration {
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info ( "开始创建redis模板对象" );
        RedisTemplate redisTemplate = new RedisTemplate ();
        //设置Redis的连接工厂对象
        redisTemplate.setConnectionFactory ( redisConnectionFactory );
        //设置Redis key的序列化器
        redisTemplate.setKeySerializer ( new StringRedisSerializer () );
        return redisTemplate;
    }
}
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.DataType;
import org.springframework.data.redis.core.*;

import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;

@SpringBootTest
public class SpringDataRedisTest {
    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    public void testRedisTemplate(){
        System.out.println ( redisTemplate );
        //操作字符串对象
        ValueOperations valueOperations = redisTemplate.opsForValue ();
        //操作哈希
        HashOperations hashOperations = redisTemplate.opsForHash ();
        //操作列表
        ListOperations listOperations = redisTemplate.opsForList ();
        //操作无序集合
        SetOperations setOperations = redisTemplate.opsForSet ();
        //操作有序集合
        ZSetOperations zSetOperations = redisTemplate.opsForZSet ();
    }

    /**
     * 操作字符串类型的数据
     */
    @Test
    public void testString(){
        //set get setex setnx
        redisTemplate.opsForValue ().set ( "city","北京" );
        String city = (String) redisTemplate.opsForValue ().get ( "city" );
        System.out.println (city);
        redisTemplate.opsForValue ().set ( "code","1234",3, TimeUnit.MINUTES );
        redisTemplate.opsForValue ().setIfAbsent ( "lock",1 );//setex
        redisTemplate.opsForValue ().setIfAbsent ( "lock",2 );


    }
    /**
     * 操作哈希类数据
     */
    @Test
    public void testHash(){
        //hset hget hdel hkeys hvals
        HashOperations hashOperations = redisTemplate.opsForHash ();
        hashOperations.put ( "100","name","tom" );
        hashOperations.put ( "100","age","20" );

        String name = (String) hashOperations.get ( "100", "name" );
        System.out.println ( name );
        Set keys = hashOperations.keys ( "100" );
        System.out.println ( keys );
        List values = hashOperations.values ( "100" );
        System.out.println ( values );
        hashOperations.delete ( "100","age" );
    }
/**
 * 操作列表类型数据
 */
@Test
public void testList(){
    //lpush lrange rpop llen
    ListOperations listOperations = redisTemplate.opsForList ();
    listOperations.leftPushAll ( "mylist","a","b","c" );
    listOperations.leftPush ( "mylist","d" );
    List mylist = listOperations.range ( "mylist", 0, -1 );
    System.out.println ( mylist );
    listOperations.rightPop ( "mylist" );
    Long size = listOperations.size ( "mylist" );
    System.out.println ( size );

}
/**
 * 无序集合类型数据
 */
@Test
public void testSet(){
    //sadd smember scard sinsert sunion srem
    SetOperations setOperations = redisTemplate.opsForSet ();
    setOperations.add ( "set1","a","b","c","d" );
    setOperations.add ( "set2","a","b","x","y" );
    Set members = setOperations.members ( "set1" );
    System.out.println ( members );
    Long size = setOperations.size ( "set1" );
    System.out.println ( size );
    Set intersect = setOperations.intersect ( "set1", "set2" );
    System.out.println ( intersect );
    Set union = setOperations.union ( "set1", "set2" );
    System.out.println ( union );
    setOperations.remove ( "set1","a","b" );

}
/**
 * 操作有序集合
 */
@Test
public void testZset(){
    //zadd zrange zincrby zrem
    ZSetOperations zSetOperations = redisTemplate.opsForZSet ();
    zSetOperations.add ( "zset1","a",10 );
    zSetOperations.add ( "zset1","b",12 );
    zSetOperations.add(  "zest1","c",9);
    Set zset1 = zSetOperations.range ( "zset1", 0, -1 );
    System.out.println ( zset1 );
    zSetOperations.incrementScore ( "zset1","c",10 );
    zSetOperations.remove ( "zset1","a","b" );
}
/**
 * 通用命令
 */
@Test
public void testCommom(){
    //keys exists del
    Set keys = redisTemplate.keys ( "*" );
    System.out.println ( keys );
    Boolean name = redisTemplate.hasKey ( "name" );
    Boolean set1 = redisTemplate.hasKey ( "set1" );
    for (Object key : keys) {
        DataType type = redisTemplate.type ( key );
        System.out.println ( type.name () );
    }
    redisTemplate.delete ( "mylist" );
}
}

五、店铺营业状态设置

5.1、需求分析设计

5.2、代码开发

import com.sky.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;

@RestController("adminShopController")
@RequestMapping("/admin/shop")
@Api(tags = "店铺相关接口")
@Slf4j
public class ShopController {
    public static final String KEY="SHOP_STATUS";
    @Autowired
    private RedisTemplate redisTemplate;
    @ApiOperation ( "设置店铺的营业状态" )
    @PutMapping("/{status}")
    public Result setStatus(@PathVariable Integer status){
        log.info ( "设置店铺的营业状态,{}",status==1?"营业中":"打烊中" );
        redisTemplate.opsForValue ().set ( KEY,status );
        return Result.success ();
    }

    /**
     * 获取店铺营业状态
     * @return
     */
    @GetMapping("/status")
    @ApiOperation ( "获取店铺营业状态" )
    public  Result<Integer> getStatus(){
        Integer shop_status = (Integer) redisTemplate.opsForValue ().get ( KEY );
        log.info ( "获取店铺营业状态,{}",shop_status==1?"营业中":"打烊中");
        return Result.success (shop_status);

    }
}

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

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

相关文章

C++排序、前缀和算法的应用:英雄的力量

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 排序 题目 英雄的力量 给你一个下标从 0 开始的整数数组 nums &#xff0c;它表示英雄的能力值。如果我们选出一部分英雄&#xff0c;这组英雄的 力量 定义为&#x…

VMware——VMware17设置WindowServer2012R2环境静态IP及关闭防火墙

目录 一、VMware17设置WindowServer2012R2环境静态IP1.1、工具栏虚拟机的设置步骤1.2、工具栏编辑的设置步骤1.3、静态IP的设置步骤 二、VMware17关闭WindowServer2012R2环境防火墙 一、VMware17设置WindowServer2012R2环境静态IP 1.1、工具栏虚拟机的设置步骤 打开VMware虚拟…

第五章 I/O管理 十二、磁盘的管理

目录 一、磁盘初始化 Step 1&#xff1a; Step 2: Step 3: 二、引导块 三、坏块的管理 1、坏块的定义&#xff1a; 2、管理&#xff1a; &#xff08;1&#xff09;对于简单的磁盘&#xff1a; &#xff08;2&#xff09;对于复杂的磁盘&#xff1b; 四、总结 一、磁…

120道Python面试题.pdf ,完全版开放下载

Python作为一门高效、多用途的编程语言&#xff0c;受到越来越多大型科技公司的青睐。这篇文章梳理了120道各大厂Python一系列经典面试题&#xff0c;帮助在应对大厂面试时更从容应对。 大厂更加注重对候选人的技术深度和实际操作能力&#xff0c;这套面试题不仅包含Python基础…

香港服务器不稳定的几种情况

​  近年来&#xff0c;随着互联网的迅猛发展&#xff0c;香港作为一个重要的网络枢纽地区&#xff0c;扮演着连接中国内地和国际网络的重要角色。一些用户表示在使用香港服务器时可能会遇到不稳定的情况&#xff0c;导致访问困难、加载缓慢甚至无法连接。 为什么香港服务器会…

EasyRecovery易恢复16中文免费版下载

最近一直在加班码方案&#xff0c;抓bug&#xff0c;熬夜都成了家常便饭。原本以为这种艰难的生活快要迎来胜利的曙光&#xff0c;偏偏老天还要给我再来当头一棒&#xff01;写完方案被我误删了&#xff0c;而且还彻底清空了废纸篓&#xff0c;团队几天几夜的成果毁于一旦&…

线扫相机DALSA--常见问题三:未找到采集卡

“计算机”右键“管理”&#xff0c;选择“设备管理器”&#xff0c;单击打开“图像设备”&#xff0c;即可看到PC上所安装的采集卡型号&#xff0c;采集卡正常状态表现如上图所示&#xff0c;如果采集卡显示黄色叹号&#xff0c;表明驱动存在异常&#xff0c;解决采集卡丢失问…

X Windows

X Windows System 简介 Linux中图形接口&#xff08;GUI&#xff09;称为 X Windows System&#xff0c;简称 X 或 X11。 组件 X Server 管理客户端硬件&#xff0c;接受键盘鼠标等设备的输入信息&#xff0c;并将图形绘制到屏幕 X Client 每个X Client彼此不知道对方是…

如何绘制自定义折线图?

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 绘制折线图&#xff0c;难点在于共有六个纵坐标&#xff0c;且各个纵坐标之间的间距无规则&#xff0c;我们需要在该坐标系中绘制折现图Dm、Im、Sm、Cm&#xff08;2&#xff0c;7&#xff0c;5&#xff0c;7&#xf…

Py之auto-gptq:auto-gptq的简介、安装、使用方法之详细攻略

Py之auto-gptq&#xff1a;auto-gptq的简介、安装、使用方法之详细攻略 目录 auto-gptq的简介 1、版本更新历史 2、性能对比 推理速度 困惑度&#xff08;PPL&#xff09; 3、支持的模型 3、支持的评估任务 auto-gptq的安装 auto-gptq的使用方法 1、基础用法 (1)、量…

微信小程序 跳转客服页面

前言 小程序 用户反馈 没有页面设计 可以直接跳转小程序指定客服页面 <button class"contactBtn"open-type"contact" contact"handleContact" session-from"sessionFrom">

CSS画三角形(三种方法)

使用CSS画一个三角形&#xff0c;想必部分同学都有一个小疑问&#xff0c;css怎么做三角形&#xff0c;让我为大家介绍一下吧&#xff01; 第一种方法 div {width: 0;height: 0;border-style: solid;border-width: 50px;border-color: transparent transparent black transpa…

学习笔记二十八:K8S控制器Daemonset入门到企业实战应用

DaemonSet控制器&#xff1a;概念、原理解读 DaemonSet概述DaemonSet工作原理&#xff1a;如何管理PodDaemonset典型的应用场景DaemonSet 与 Deployment 的区别DaemonSet资源清单文件编写技巧 DaemonSet使用案例&#xff1a;部署日志收集组件fluentdDaemonset管理pod&#xff1…

PyTorch深度学习实战(24)——从零开始实现Mask R-CNN实例分割

PyTorch深度学习实战&#xff08;24&#xff09;——从零开始实现Mask R-CNN实例分割 0. 前言1. Mask R-CNN1.1 网络架构1.2 RoI Align1.3 Mask 检测头 2. 使用 Mask R-CNN 实现实例分割2.1 数据集分析2.2 模型构建策略2.3 模型构建与训练 3. 多类别实例分割小结系列链接 0. 前…

Zabbix监控nginx状态

文章目录 zabbix监控nginx状态环境前期准备开启nginx状态页面配置监控 zabbix监控nginx状态 环境 主机名IP地址角色安装的软件zabbix192.168.179.100zabbix服务端zabbix_serverzabbix_agentwanf192.168.179.11nginxzabbix客户端nginxzabbix_agent 前期准备 部署nginx请阅读…

删除排序链表中的重复节点II(C++解法)

题目 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5]示例 2&#xff1a; 输入&#xff1a;head [1…

火影忍者游戏攻略大公开!成为忍者大师的秘诀揭秘

大家好&#xff01;作为火影忍者游戏的玩家&#xff0c;我们都希望能够在游戏中成为优秀的忍者大师&#xff0c;战胜强大的对手。为了帮助大家实现这一目标&#xff0c;我想分享一些实用的攻略和技巧。 首先&#xff0c;熟悉忍者技能是成为忍者大师的基础。在火影忍者游戏中&am…

Pytorch 注意力机制解析与代码实现

什么是注意力机制 注意力机制是深度学习常用的一个小技巧&#xff0c;它有多种多样的实现形式&#xff0c;尽管实现方式多样&#xff0c;但是每一种注意力机制的实现的核心都是类似的&#xff0c;就是注意力。 注意力机制的核心重点就是让网络关注到它更需要关注的地方。 当…

Elasticsearch 集群分片出现 unassigned 其中一种原因详细还原

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…

miniconda快速安装

目录 一、Linux下miniconda安装 1.1、安装 1.2、miniconda初始化 二、Windows下miniconda安装 三、maOS下miniconda安装 3.1、安装 3.2、miniconda初始化 四、参考&#xff1a; 本文给出windows、macos、linux下快速安装miniconda方法。 对比conda&#xff0c;minicond…