当前位置: 首页> 汽车> 车展 > 网络软件系统_域名归属查询_关键词是网站seo的核心工作_百度推广一年大概多少钱

网络软件系统_域名归属查询_关键词是网站seo的核心工作_百度推广一年大概多少钱

时间:2025/7/18 9:28:30来源:https://blog.csdn.net/IT_Octopus/article/details/143164880 浏览次数: 1次
网络软件系统_域名归属查询_关键词是网站seo的核心工作_百度推广一年大概多少钱

问题:使用execute,是

           result = redisTemplate.execute(redisScript,Collections.singletonList(hashKey), // KEYSargs.toArray()); // ARGV

会存在field有转义符在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现这个方法是直接调用下图的方法
在这里插入图片描述
使用的序列化的方式是
template.getValueSerializer(), (RedisSerializer) template.getValueSerializer()

而不是redisTemplate hash 存储的序列化方式
在这里插入图片描述
解决方案:
添加DefaultRedisScript 改为Object 去掉范式,设置指定的序列化方式,同时入参从 Map<String, Object> 改为Map<String, String>
在这里插入图片描述
调用时想要使用Jackson2JsonRedisSerializer 进行序列化value
在这里插入图片描述
在这里插入图片描述
需要自行对需要处理的value 进行序列化,转换为JSON 字符串,如下代码段

private ObjectMapper objectMapper = new ObjectMapper();public void testHmsetLuaRead() throws JsonProcessingException {Map<String, String> map = new HashMap<>();Map<String, Object> item = new HashMap<>();item.put("content_id", "111test");map.put("111test", objectMapper.writeValueAsString(item));redisUtils.insertIntoHashWithExpireTime("testNamelua1727", map, 11111);//        redisUtils.hmset("testName11", map, 1111);}

插入方法如下

    public Long insertIntoHashWithExpireTime(String hashKey, Map<String, String> fieldsAndValues, int expireTime) {Object result = null;// unpack(ARGV)在Lua中是用来将数组解包成一系列单独的参数。// ARGV[#ARGV]获取的是传递给脚本的最后一个参数(在 Lua 中,# 操作符用于获取表中的元素数量。因此,ARGV[#ARGV] 将返回 ARGV 表中的最后一个元素。)// 获取lua 脚本final String luaScript = getLuaScript();log.debug("luaScript:{}", luaScript);try {// 将 Map 转换成有序的键值对列表// 创建参数列表List<String> args = new ArrayList<>(fieldsAndValues.size() * 2 + 1);for (Map.Entry<String, String> entry : fieldsAndValues.entrySet()) {args.add(entry.getKey());args.add(entry.getValue());}args.add(String.valueOf(expireTime)); // 最后一个参数是过期时间DefaultRedisScript redisScript = new DefaultRedisScript<>();redisScript.setScriptText(luaScript);redisScript.setResultType(Long.class);//返回类型是Long
//            // 设置序列化器
//            redisTemplate.setKeySerializer(new StringRedisSerializer());
//            redisTemplate.setValueSerializer(new StringRedisSerializer());// 使用默认的 JdkSerializationRedisSerializer 来序列化和反序列化数据。RedisSerializer<String> stringSerializer = new StringRedisSerializer();JdkSerializationRedisSerializer longSerializer = new JdkSerializationRedisSerializer();// 执行脚本
//            result = redisTemplate.execute(redisScript,
//                    Collections.singletonList(hashKey), // KEYS
//                    args.toArray()); // ARGVresult = redisTemplate.execute(redisScript,  stringSerializer, longSerializer,Collections.singletonList(hashKey), // KEYSargs.toArray());log.debug("redisEVALLuaScript result :{}", result);} catch (Exception e) {e.printStackTrace();log.error("e:", e);}return (Long) result;}
关键字:网络软件系统_域名归属查询_关键词是网站seo的核心工作_百度推广一年大概多少钱

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: