当前位置: 首页 > article >正文

苍穹外卖day4 redis相关简单知识 店铺营业状态设置

内存存储 键值对 key-value 一般用于处理突发性大量请求数据操作(暂时浅显理解)

读写速度极快,常用于缓存数据,减少对数据库的访问压力,提高系统性能。例如,可以缓存用户会话、商品信息、页面数据

设置默认密码123456

Redis五种常见数据类型

哈希结构可以存对象及其属性 集合可以用来查询公共元素 让我联系到并查集的内容

有序集合zset/sorted set 可用来做排行榜

不同于MYSQL Redis操作需要判断当前数据类型 再执行特定操作命令

setex key second value 短信验证码

setnx key value 只有在key不存在时设置key的值 会在分布式锁涉及

哈希操作命令

列表操作命令  按照插入顺序排序

> lrange mylist 0 -1 从栈头到栈尾 e d c b a 

> lpop mylist    e
> rpop mylist    a

集合操作命令 Redis集合是无序集合且不能重复出现相同元素

有序集合操作

了解类知识 接下来要部署在java项目里

原理上还是用上述语句 pom.xml配置 再创建RedisConfig配置类 在yml文件里构建redis关联 

实现语句 如下 换汤不换药系列

@Configuration
@Slf4j
public class RedisConfiguration {
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate redisTemplate = new RedisTemplate();
        //设计redis连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置redis key的序列化器 避免显示乱码
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}
在yml文件里配置redis
  redis:
    host: localhost
    port: 6379
    password: 123456
    database: 0
@SpringBootTest
public class SpringDataRedisTest {
    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    public void RedistTemplateTest(){
        System.out.println(redisTemplate);
        HashOperations hashOperations = redisTemplate.opsForHash();
        ListOperations listOperations = redisTemplate.opsForList();
        SetOperations setOperations = redisTemplate.opsForSet();
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
        ValueOperations valueOperations = redisTemplate.opsForValue();
    }

    /**
     * 操作字符串类型数据
     */
    @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");
        redisTemplate.opsForValue().setIfAbsent("lock","2");
    }

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

        String name = (String) hashOperations.get("1000", "name");
        System.out.println(name);

        Set keys = hashOperations.keys("1000");
        System.out.println(keys);

        List values = hashOperations.values("1000");
        System.out.println(values);

        hashOperations.delete("1000","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 smembers scard sinter 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("zset1", "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 testCommon(){
        //keys exists type 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");
    }

店铺营业状态设置

这里用到redis来存储当前营业状态为1(营业)还是0(未营业)

 

要在控制层里创建用户端和管理端 所以要创建两个ShopController  在WebMVCconfigragtion里

设置两个Docker 分别管理 用户端和管理端

随记

有点焦虑了 现在好像redis mq 和 这个项目还没敲完 也没学 啊 好麻烦 还是得学 ! 提高效率!


http://www.kler.cn/a/549460.html

相关文章:

  • Linux 基础IO——重定向和缓冲区
  • 大疆无人机需要的kml文件如何制作kml导出(大疆KML文件)
  • Instagram与小红书的自动化运营
  • Vite入门指南
  • github用户名密码登陆失效了
  • Mac上搭建宝塔环境并部署PHP项目
  • Ubuntu 连接 air pods
  • ios中常见的设计原则和设计模式
  • ARINC 429详解
  • CSS Grid 网格布局,以及 Flexbox 弹性盒布局模型,它们的适用场景是什么?
  • VS Code User和System版区别【推荐使用System版本】and VSCode+Keil协同开发之Keil Assistant
  • 【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析③】
  • ffmpeg-cli-wrapper操作ffmpeg的工具
  • Anaconda +Jupyter Notebook安装(2025最新版)
  • 问卷数据分析|SPSS实操之量表描述性统计
  • 服务器硬件知识--------linux系统初识and安装
  • 探索Zephyr在汽车领域的应用潜力与挑战
  • 【LLM】13:大模型算法面试题库
  • kubectl exec 实现的原理
  • 力扣 470. 用 Rand7() 实现 Rand10() 拒绝采样 等概率随机数生成