解决:NOGROUP No such key ‘stream.orders’ or consumer group ‘g1’ in XREADGROUP with GROUP option

在做黑马点评项目的时候
基于Stream的消息队列实现异步秒杀

启动项目一直报错:NOGROUP No such key ‘stream.orders’ or consumer group ‘g1’ in XREADGROUP with GROUP option

原因:redis中没有stream.orders键

解决方法:创建一个Stream类型的消息队列,名为stream.orders

命令:

XGROUP CREATE stream.orders g1 0 MKSTREAM
#   XGROUP CREATE 队列名称  组名称  起始id  MKSTREAM不存在则自动创建

#   XGROUP 支持创建和销毁组,也支持管理consumer
#   XGROUP CREATE key groupname id|$ [MKSTREAM] [ENTRIESREAD entries_read]
#   MKSTREAM 可选选项,默认不加的话,如果指定的 stream 不存在会返回错误,加上之后不存在则会自动创建 stream

image-20221129145250289

这是RESP中的数据结构
image-20221204141221572
重新启动项目,不报错,且JMeter并发测试异步秒杀结果正确。

附上保存1000个用户信息并将其token写入文件中的代码

   /**
     * 在Redis中保存1000个用户信息并将其token写入文件中,方便测试多人秒杀业务
     */
    @Test
    void testMultiLogin() throws IOException {
        List<User> userList = userService.lambdaQuery().last("limit 1000").list();
        for (User user : userList) {
            String token = UUID.randomUUID().toString(true);
            UserDTO userDTO = BeanUtil.copyProperties(user, UserDTO.class);
            Map<String, Object> userMap = BeanUtil.beanToMap(userDTO, new HashMap<>(),
                    CopyOptions.create().ignoreNullValue()
                            .setFieldValueEditor((fieldName, fieldValue) -> fieldValue.toString()));
            String tokenKey = LOGIN_USER_KEY + token;
            stringRedisTemplate.opsForHash().putAll(tokenKey, userMap);
            stringRedisTemplate.expire(tokenKey, 30, TimeUnit.MINUTES);
        }
        Set<String> keys = stringRedisTemplate.keys(LOGIN_USER_KEY + "*");
        @Cleanup FileWriter fileWriter = new FileWriter(System.getProperty("user.dir") + "\\tokens.txt");
        @Cleanup BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
        assert keys != null;
        for (String key : keys) {
            String token = key.substring(LOGIN_USER_KEY.length());
            String text = token + "\n";
            bufferedWriter.write(text);
        }
    }
  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
BOA交叉编译步骤如下: 1. tar zxvf boa-0.94.13.tar.gz 2. cd boa-0.94.13/src && ./configure 生成Makefile文件 3. 修改"CC = gcc" 为"CC = arm-linux-gnueabi", 修改"CPP = gcc - E"为"CPP = arm-linux-gnueabi - E" 4. 修改一处源码错误, boa-0.94.13/src/compat.h "#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff" 修改为 "#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff" 5. make 编译, 此时在src目录下生成了.o和中间文件和boa执行文件 6. arm-linux-gnueabi-strip boa 去掉编译信息 BOA服务器部署步骤如下: 1. 修改boa-0.94.13/boa.conf示例文件, 主要修改内容如下: 1)Group的修改 修改 "Group nogroup"为"Group 0", 由于在/etc/group文件中没有nogroup组,所以设成0。另外在/etc/passwd中有nobody用户,所以"User nobody"不用修改。 如果修改了"User nobody"为"User 0"(表示BOA以root用户启动), 则会出现如下错误: root@huawei:/var/log/boa# cat error_log [31/Jul/2019:11:06:52 +0000] boa.c:226 - icky Linux kernel bug!: Success 可以修改boa.c L226行的源码,注释掉此部分解决如上问题. 2) ScriptAlias的修改 修改 "ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/" 为 "ScriptAlias /cgi-bin/ /var/www/cgi-bin/" 3) ServerName的设置 该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。将"#ServerName www.linuxidc.com"前面的#去掉即可。 2. 为BOA建立如下目录: mkdir /var/log/boa(创建日志文件目录) mkdir /var/www (创建HTML文档的主目录) mkdir /etc/boa (存在boa.conf配置文件的路劲) 3. 将修改好的1boa.conf放入终端/etc/boa/目录下, 将mime.types文件复制到/etc目录下,通常mime.types可以从linux电脑主机的/etc目录下直接复制即可。 4. 将主页index.html复制到/var/www目录下。 5. 将boa执行文件复制到/bin或/home/app等合适的目录下, 手动运行, ./boa, 查看端口监听: 6. 打开浏览器, 输入终端的IP地址显示index.html的内容。
引用\[1\]:在配置文件中,"nobody"和"nogroup"是两个特殊的用户和组。"nobody"是一个匿名用户,通常用于执行无需特定用户身份的任务。"nogroup"是一个匿名组,用于没有特定组身份要求的任务。在配置文件中,"force user = nobody"和"force group = nogroup"的作用是强制将所有访问该共享文件夹的用户和组都设置为"nobody"和"nogroup",以确保文件夹的访问权限正确设置。\[1\] 问题: "nobody"和"nogroup"在配置文件中的作用是什么? 回答: 在配置文件中,"nobody"和"nogroup"是两个特殊的用户和组。"nobody"是一个匿名用户,通常用于执行无需特定用户身份的任务。"nogroup"是一个匿名组,用于没有特定组身份要求的任务。在配置文件中,"force user = nobody"和"force group = nogroup"的作用是强制将所有访问该共享文件夹的用户和组都设置为"nobody"和"nogroup",以确保文件夹的访问权限正确设置。\[1\] #### 引用[.reference_title] - *1* [Linux于Windows使用Samba共享文件时文件属性nobody nogroup解决办法](https://blog.csdn.net/ethan0ly/article/details/83316381)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [ubuntu 共享出现nobody/nogroup问题](https://blog.csdn.net/sgzy001/article/details/44870847)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值