作者:zhanhailiang 日期:2014-12-21

bitmap api

SETBIT key offset value

对key所储存的字符串值,设置或清除指定偏移量上的位(bit)。

位的设置或清除取决于value參数,能够是0也能够是1。

当key不存在时,自己主动生成一个新的字符串值。

字符串会进行伸展(grown)以确保它能够将value保存在指定的偏移量上。

当字符串值进行伸展时,空白位置以0填充。

offset參数必须大于或等于0,小于2^32(bit映射被限制在512MB之内)。

返回值: 指定偏移量原来储存的位。

Warning: 对使用大的offset的SETBIT操作来说,内存分配可能造成Redisserver被堵塞。

Warning: 当生成一个非常长的字符串时,Redis 须要分配内存空间,该操作有时候可能会

造成server堵塞(block)。在2010年的Macbook Pro上,设置偏移量为536870911(512MB内

存分配),耗费约300毫秒,设置偏移量为134217728(128MB内存分配),耗费约80毫秒,

设置偏移量33554432(32MB内存分配),耗费约30毫秒,设置偏移量为8388608(8MB内存分配),

耗费约8毫秒。

GETBIT key offset

对key 所储存的字符串值,获取指定偏移量上的位(bit)。

当offset比字符串值的长度大,或者key不存在时,返回0。

返回值:字符串值指定偏移量上的位(bit)。

需求场景

在非常多业务场景中,我们都须要针对非常多功能实现配置,比方下面场景:

  1. 新增某个功能, 希望有开关能够控制是否开启该功能;
  2. 游戏上线某个新功能,希望引导用户去打开该功能,须要诱导用户,比方打开该功能,能够获取XX奖励,此时须要标记位来记录领奖记录;

代码实现

https://github.com/billfeller/billfeller.github.io/blob/master/code/IBit.php

基于Redis bitmap实现开关配置功能的更多相关文章

  1. 基于Redis位图实现用户签到功能

    场景需求 适用场景如签到送积分.签到领取奖励等,大致需求如下: 签到1天送1积分,连续签到2天送2积分,3天送3积分,3天以上均送3积分等. 如果连续签到中断,则重置计数,每月初重置计数. 当月签到满 ...

  2. Redis实战篇(二)基于Bitmap实现用户签到功能

    很多应用上都有用户签到的功能,尤其是配合积分系统一起使用.现在有以下需求: 签到1天得1积分,连续签到2天得2积分,3天得3积分,3天以上均得3积分等. 如果连续签到中断,则重置计数,每月重置计数. ...

  3. .Net分布式架构(二):基于Redis的Session共享

    一:Session简介 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台web服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台web服务器建立连 ...

  4. Redis位图实现用户签到功能

    场景需求 适用场景如签到送积分.签到领取奖励等,大致需求如下: 签到1天送1积分,连续签到2天送2积分,3天送3积分,3天以上均送3积分等. 如果连续签到中断,则重置计数,每月初重置计数. 当月签到满 ...

  5. 基于redis的cas集群配置(转)

    1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...

  6. 基于redis的cas集群配置

    1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...

  7. apscheduler(定时任务) 基于redis持久化配置操作

    apscheduler(定时任务) 基于redis持久化配置操作 安装模块 pip install apscheduler 导入模块配置 ## 配置redis模块 from apscheduler.j ...

  8. 基于Redis分布式BitMap的应用

    一.序言 在实际开发中常常遇到如下需求:判断当前元素是否存在于已知的集合中,将已知集合中的元素维护一个HashSet,使用时只需耗时O(1)的时间复杂度便可判断出结果,Java内部或者Redis均提供 ...

  9. Tomcat7基于Redis的Session共享实战二

    目前,为了使web能适应大规模的访问,需要实现应用的集群部署.集群最有效的方案就是负载均衡,而实现负载均衡用户每一个请求都有可能被分配到不固定的服务器上,这样我们首先要解决session的统一来保证无 ...

随机推荐

  1. 智课雅思词汇---六、fer是什么意思

    智课雅思词汇---六.fer是什么意思 一.总结 一句话总结:词根:fer = to carry(拿), to bring(带来), to bear(负担, 1.equ是什么意思? 词根:-equ- ...

  2. LSTM入门学习——结合《LSTM模型》文章看

    摘自:https://zybuluo.com/hanbingtao/note/581764 写得非常好 见原文 长短时记忆网络的思路比较简单.原始RNN的隐藏层只有一个状态,即h,它对于短期的输入非常 ...

  3. 暑假集训-WHUST 2015 Summer Contest #0.2

    ID Origin Title 10 / 55 Problem A Gym 100625A Administrative Difficulties   4 / 6 Problem B Gym 1006 ...

  4. jquery easyui 输入框 禁止输入负数 设置属性data-options="min:0,required:true"

    jquery easyui  输入框 禁止输入负数  设置属性data-options="min:0,required:true" <input id="days& ...

  5. decimal.ToString("#0.00")与decimal.ToString("#.##")的区别

    decimal decTemp = 2.1m; Console.WriteLine(decTemp.ToString("#0.00")); //输出2.10 Console.Wri ...

  6. 【Henu ACM Round#17 B】USB Flash Drives

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 排序,逆序.贪心选较大的就好. [代码] #include <bits/stdc++.h> #define ll lon ...

  7. FZU 1968 Twinkling lights III

    Twinkling lights III Time Limit: 8000ms Memory Limit: 131072KB This problem will be judged on FZU. O ...

  8. 一个project师该怎样高效工作

    1.  静. 在千头万绪,百般push.各种IM电话邮件狂轰滥炸中保持一个静字.找到最适合如今做的事情,情绪不要被外界所干扰.一次仅仅做一件事,不要被打断. 有的公司土鳖文化严重,领导一会儿要求你干这 ...

  9. Quartus II sof文件转 jic文件

    选择File->Convert Programming Files... Programming File Type选择JTAG Indirect ConfigurationFile(.jic) ...

  10. K短路 spfa + A*

    #include <stdio.h> #include <string.h> #include <queue> #include <algorithm> ...