项目中需要将oracle中的数据同步到redis中进行缓存,redis默认是UTF-8格式缓存数据,同步工作是java工程来开发的,使用缓存的工程是C++写的,C++中使用缓存是直接将业务数据与缓存数据进行对比,然后处理。由于C++中业务数据是GBK,所以要求redis中必须以GBK格式来存储数据,原因是如果将redis的数据换成UTF-8,C++中就必须每次对数据进行转换,业务数据量大的话,对性能有影响。
由于redis中存储多种数据,不可能因为一个业务将格式更改。所以只能是在存入数据时进行处理,由于数据是从oracle中获取,oracle是UTF-8编码,所以需要转码。
解决方案如下:
//oracle查询 ps = conn.prepareStatement(syncSql); rs = ps.executeQuery(); //设置要处理的编码格式 Charset cs=Charset.forName("GBK"); //通过数组处理 Map<byte[],byte[]> map = new HashMap<byte[],byte[]>(); while (rs.next()) { try { //获得UTF-8编码字符串 String str = rs.getString("CODE"); //使用Charset 处理 CharBuffer cb = CharBuffer.wrap(str); ByteBuffer bbf = cs.encode(cb); //去掉多余的数组长度 byte[] valueByte = new byte[bbf.limit()]; System.arraycopy(bbf.array(), 0, valueByte, 0, bbf.limit()); //存储数据 jedis.set(rs.getString("KEY").getBytes(), valueByte);
这里有几点要注意:
1. redis存储过程需要使用byte[],如果用字符串直接处理会导致1个GBK中文变成6个字节。
2. byte[]数组在操作时处理长度要通过limit()方法来去掉多余字节。
相关推荐
这里需要注意编码问题,Java 中,字符串的编码默认可能是 UTF-8,但在其他地方可能使用 GBK 或其他编码,导致 Key 不匹配。使用相同的编码规则是关键。 4. **数据类型匹配**: Redis 支持多种数据类型,如 String...
它的语法吸收了C语言、Java和Perl的特点,使得学习PHP变得相对容易。...它涉及到PHP基础知识、GBK编码处理、数据库交互、前端技术应用、安全性考虑以及性能优化等多个方面,是一个综合性的Web开发项目。
3. **数据库管理**:存储网站的配置信息、分类数据、用户数据等,可能使用MySQL等数据库管理系统。 4. **用户管理**:提供用户注册、登录、个人信息管理等功能,支持用户自定义收藏夹和推荐网址。 5. **广告管理**:...
8. **对象序列化**:Java的`Serializable`接口用于实现对象到字节流的转换,以便持久化存储或在网络间传输。使用`ObjectOutputStream`和`ObjectInputStream`进行操作。 9. **反射**:Java反射API允许程序在运行时...
可能会使用Ehcache或Redis等缓存技术来存储频繁访问的数据。 7. **国际化和本地化**:GBK编码意味着中文支持,但源码中也可能包含其他语言的支持,这涉及到国际化(i18n)和本地化(l10n)的设计。 8. **邮件服务...
8. **国际化与本地化**:考虑到GBK编码,源码可能包含了多语言支持,允许用户根据所在地区选择不同的语言环境。 9. **错误与日志记录**:PHP的错误处理和日志记录功能,有助于开发者追踪和修复程序中的问题。 通过...
在GBK编码下,中文汉字通常占用2个字节。 **选择题解析:** 正确答案是 **B**:2。 #### 8. 数据验证注解知识点 **知识点概述:** `javax.validation` 包提供了用于数据验证的注解,这些注解可以在字段、getter ...
1. **GBK编码**:ftbbs_gbk_7.2中的“gbk”代表的是GBK编码,这是一种广泛用于简体中文字符集的编码方式,它包含了大部分中文字符,确保论坛能正确显示中文内容。 2. **数据库管理**:社区论坛的核心是数据存储和...
Ecmall源码使用GBK编码,这在处理中文字符时更为友好。GBK是中国大陆常用的多字节字符集,包含了大部分汉字。但需要注意的是,GBK不支持繁体字和其他语言,如果需要支持多语言,可能需要进行编码转换或选择UTF-8编码...
14. **编码转换**:处理字符编码问题,如GBK到UTF-8的转换,确保数据的正确传输和展示。 15. **安全加密**:提供加密解密算法,如MD5、AES、RSA等,用于数据安全保护。 综上所述,Common类库是一个集成了各种通用...
- 对于出现乱码的问题,需要在 IDEA 中设置正确的文件编码格式,通常情况下设置为 GBK。 - 数据库连接配置:根据实际环境修改数据库用户名、密码以及数据库名等信息。 - Redis 配置:如果使用本地 Redis,则默认...
支持 GBK 编码 开源数据集 A/B 无感知更新数据 官方扩展 网易云音乐 我们一直致力于框架的可维护性与可扩展性,这也是为什么我们选择下一版本(v2)将使用 Go 编写。 由于历史问题,此框架存在着很多不足(需要重构...
修复gbk编码的文件名 破解RSA!破解短长度密钥的RSA加密 初步与字符串相互转换 用redis存储字典 python selenium + Docker chrome无头 更改种子文件中的跟踪器 uwsgi优雅重启 Python3.5打开打开文件默认使用utf-8 使