当前位置: 首页 > 面试题库 >

在Redis位图上获取操作返回奇怪的输出

经骁
2023-03-14
问题内容

我正在redis中进行setbit操作,以标记特定日期哪些用户在线。

我正在做一个redis get操作来获取密钥的值。

coffee> redis.setbit "a",7,1
true
coffee> redis.setbit "d",4,1
true
coffee> redis.setbit "g",1,1
true
coffee> redis.setbit "h",0,1

输出是

coffee> redis.get "a",(err,res)->console.log res.toString().charCodeAt(0)
true
coffee> 1

coffee> redis.get "d",(err,res)->console.log res.toString().charCodeAt(0)
true
coffee> 8

coffee> redis.get "g",(err,res)->console.log res.toString().charCodeAt(0)
true
coffee> 64

coffee> redis.get "h",(err,res)->console.log res.toString().charCodeAt(0)
true
coffee> 65533

我的问题是在“ h”键处设置了第0位1。它应该返回128但返回65533。为什么这样?

我的最终目标是从redis中以二进制形式获取位图,以便我可以确定在特定日期哪些用户处于活动状态。


问题答案:

发生此错误是由于utf-8编码。当我们将第0位设置为1时,它不遵循utf-8规则。现在,当我们尝试获取它时,我们得到了替换角色

U + FFFD-替换字符,用于替换未知或无法表示的字符

当我们对它执行charCodeAt时,将得到65533。

在此处阅读UTF-8和特殊Unicode块



 类似资料:
  • 问题内容: 有没有人看到像这样的方法签名后放置的数组? 版画 过去,“ C”兼容性是一种奇怪的表示法,但我也无法想象有人用C编写这种代码。 有谁知道为什么甚至允许这样做? 如果有问题,我正在使用Java 7 update 10。 这与Java 6中的功能相同。http://ideone.com/91rZV1 顺便说一句,这不会编译,我也不希望它编译 问题答案: 有谁知道为什么甚至允许这样做? 在这

  • 我将数据保存到会话中,但是我尝试将其读回,结果为空。Spring MVC是我的后端,Angular 4是前端。 爪哇: 角: 你知道我错过了什么吗?也许是CORS的事?

  • 我们在Heroku上的Ruby on Rails应用程序一直在抛出奇怪的“未知格式”错误。在检查了正在发生的事情之后,似乎有人/某事试图将此字符串发送到我们的登录操作: 这是黑客企图吗?如果是的话,我应该担心吗?我自己运行了post命令(使用curl)但没有得到什么…

  • 问题内容: 每当我在控制台中输入错误或出错时,都会出现以下消息: 我同时使用Anaconda安装了Python 2.7和3.3。我想知道这是否正常还是python 2.7和3.3之间存在冲突 问题答案: 假设您使用的是ubuntu,这是相关的错误报告https://bugs.launchpad.net/ubuntu/+source/python3.3/+bug/1192890 您需要修补/etc/

  • 我试图使用phantom到异步插入相当少量的数据,但是这个查询总是失败:我得到以下异常: WriteTimeOutException:在一致性串行写入查询期间Cassandra超时(需要1个副本,但只有0个确认写入) 在com.datastax.driver.core.exceptions.writeTimeoutException.copy(writeTimeoutException.java:

  • 但是,当从handleAsyncErrors()流链接ObjectNode并到达相同的httpCallbackFlow()时,我们会得到一个异常,该异常由 restClientException:无法写入请求:在org.springframework.web.client.restTemplate$HttpEntityRequestCallback.dowithRequest(restTempla