Redis

1.Redis入门

Redis基于内存 的**key-value(键值对)**结构数据库

基于内存存储,读写性能高

适合存储热点数据(热点商品,资讯,新闻)[顿时间内大量访问]

企业应用广泛

MySQL 磁盘 二维表

1.1 String
复制代码
setex key seconds value    几秒后会失效,短信验证码

1.2 hash

队列 先进先出

1.3 list
1.4 set
1.5 zset
1.6 通用命令

2. 在Java中操作Redis---------- Spring Data Redis

database 0-15 16个,各自隔离

java 复制代码
package com.sky.test;

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 RedisTemplateTest {
    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void test_RedisTemplate(){
        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 test_redis_String(){
        //set get setex setnx
        ValueOperations valueOperations = redisTemplate.opsForValue();
        valueOperations.set("name","zhangsan");
        System.out.println(valueOperations.get("name"));

        valueOperations.set("age",18,60, TimeUnit.SECONDS);
        System.out.println(valueOperations.get("age"));

        valueOperations.setIfAbsent("name","mike");
        System.out.println(valueOperations.get("name"));




    }
    @Test
    public void test_redis_hash(){
        //hset hget hdel hkeys hvals
        HashOperations hashOperations = redisTemplate.opsForHash();
        hashOperations.put("user:1","name","zhangsan");
        hashOperations.put("user:1","age",18);
        hashOperations.put("user:1","gender","男");
        String name =(String) hashOperations.get("user:1", "name");
        System.out.println(name);
        //System.out.println(hashOperations.get("user:1","age"));
        //System.out.println(hashOperations.get("user:1","gender"));

        hashOperations.delete("user:1","age");
        Set keys = hashOperations.keys("user:1");
        System.out.println(keys);
        List values = hashOperations.values("user:1");
        System.out.println(values);
    }

    @Test
    public void test_redis_list() {
        //lpush  lrange rpop  llen
        ListOperations listOperations = redisTemplate.opsForList();
        listOperations.leftPush("mylist","a");
        listOperations.leftPushAll("mylist","b","c","d");
        List range = listOperations.range("mylist", 0, -1);
        System.out.println(range);
        Object a = listOperations.rightPop("mylist");
        System.out.println(a);
        Long mylist = listOperations.size("mylist");
        System.out.println(mylist);

    }
    @Test
    public void test_redis_set(){
        //sadd smembers scard sinter sunion srem
        SetOperations setOperations = redisTemplate.opsForSet();
        setOperations.add("set1","a","b","c","d");
        setOperations.add("set2","a","b","e","f");
        Set members = setOperations.members("set1");
        System.out.println(members);
        Long set1 = setOperations.size("set1");
        System.out.println(set1);
        Set intersect = setOperations.intersect("set1", "set2");
        System.out.println(intersect);
        Set union = setOperations.union("set1", "set2");
        System.out.println(union);
        setOperations.remove("set1","a");

    }
    @Test
    public void test_redis_zset(){
        //zadd zrange zincrby zrem
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
        zSetOperations.add("zset1", "a", 10.1);
        zSetOperations.add("zset1", "b", 2.5);
        zSetOperations.add("zset1", "c", 3.6);
        Set range = zSetOperations.rangeWithScores("zset1", 0, -1);
        System.out.println(range);
        Double score = zSetOperations.incrementScore("zset1", "b", 5);
        System.out.println(score);

       zSetOperations.remove("zset1","a");
       Long zset1 = zSetOperations.size("zset1");
       System.out.println(zset1);

    }



@Test
    public void test_redis_Common(){
        //keys exists del type
    Set keys = redisTemplate.keys("*");
    System.out.println(keys);
    System.out.println(redisTemplate.hasKey("name"));
    DataType type = redisTemplate.type("name");
    System.out.println(type.name());
    System.out.println(redisTemplate.delete("name"));
}





    }

修改bean的名称,在RestController(xxxx)

java 复制代码
package com.sky.controller.admin;

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.data.redis.core.ValueOperations;
import org.springframework.web.bind.annotation.*;

@RestController("adminStatusController")
@RequestMapping("/admin/shop")
@Api(tags = "管理端-营业状态管理")
@Slf4j
public class StatusController {
    private static final String SHOP_STATUS = "SHOP_STATUS";
    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 设置营业状态
     * @param status
     * @return
     */
    @PutMapping("/{status}")
    @ApiOperation("设置营业状态")
    public Result setStatus(@PathVariable Integer status){
        log.info("管理端设置营业状态为:{}",status == 1 ? "营业中" : "打烊中");
        redisTemplate.opsForValue().set(SHOP_STATUS,status);
        return Result.success();
    }

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

doc.html 管理端,用户端

相关推荐
杰克逊的日记1 小时前
mysql数据实时全量+增量迁移
数据库·mysql·数据迁移
linuxxx1102 小时前
centos7 升级MariaDB 到 10.5 或更高版本
数据库·mariadb
换个网名有点难2 小时前
django怎么配置404和500
数据库·django
Adellle3 小时前
MySQL
数据库·后端·mysql
就是有点傻4 小时前
C# 中实现一个线程持续读取,另一个线程负责写入,且写入时读取线程暂停
数据库·c#
云观秋毫4 小时前
试试智能体工作流,自动化搞定运维故障排查
运维·数据库·自动化
是沫沫子耶4 小时前
mysql实例
数据库
比钻石还闪亮的nan人4 小时前
CentOS 7下安装PostgreSQL 15
数据库·postgresql
Full Stack Developme4 小时前
SQL 集合运算
数据库·sql
逢生博客4 小时前
使用 langchain_deepseek 实现自然语言转数据库查询SQL
数据库·sql·langchain·deepseek