位图操作bitmap
时间:2019-08-06
本文章向大家介绍位图操作bitmap,主要包括位图操作bitmap使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
# 设置某一位上的值(offset是偏移量,从0开始) setbit key offset value # 获取某一位上的值 GETBIT key offset # 统计键所对应的值中有多少个 1 BITCOUNT key (bitcount key)
# 默认扩展位以0填充 127.0.0.1:6379> set mykey ab OK 127.0.0.1:6379> get mykey "ab" 127.0.0.1:6379> SETBIT mykey 0 1 (integer) 0 127.0.0.1:6379> get mykey "\xe1b" 127.0.0.1:6379>
127.0.0.1:6379> GETBIT mykey 3 (integer) 0 127.0.0.1:6379> GETBIT mykey 0 (integer) 1
127.0.0.1:6379> SETBIT user001 1 1 (integer) 0 127.0.0.1:6379> SETBIT user001 30 1 (integer) 0 127.0.0.1:6379> bitcount user001 (integer) 2
应用场景案例
网站用户的上线次数统计(寻找活跃用户)
用户名为key,上线的天作为offset,上线设置为1
SETBIT user1:login 1 1
SETBIT user1:login 30 1
BITCOUNT user1:login
import redis r = redis.Redis(host='192.168.43.49',port=6379,db=0) # user1,一年之中第1天和第5天登录 r.setbit('user1:login',1,1) r.setbit('user1:login',5,1) # user2,一年之中第100天和第200天登录 r.setbit('user2:login',100,1) r.setbit('user2:login',200,1) # user3,一年之中好多天登录 for i in range(0,365,2): r.setbit('user3:login',i,1) # user4,一年之中好多天登录 for i in range(0,365,3): r.setbit('user4:login',i,1) user_list = r.keys('user*') print(user_list) # 活跃用户 active_users = [] # 不活跃用户 noactive_user = [] for user in user_list: # 统计位图中有多少个 1 login_count = r.bitcount(user) if login_count >= 100: active_users.append((user,login_count)) else: noactive_user.append((user,login_count)) # 打印活跃用户 for active in active_users: print('活跃用户:',active)
原文地址:https://www.cnblogs.com/maplethefox/p/11311821.html
- 基于Cef内核的多店铺登录器(含源码)
- Android解析ClassLoader(二)Android中的ClassLoader
- 近期开发中遇到的问题总结
- Apache Spark中的决策树
- 数据结构是哈希表(hashTable)
- 【翻译】在Visual Studio中使用Asp.Net Core MVC创建你的第一个Web API应用(一)
- 基于JQuery EasyUI的WebMVC控件封装(含源码)
- Android系统源码分析-JNI
- EntityFrameWork实现部分字段获取和修改(含源码)
- 基于Ado.Net的日志组件
- Do you kown Asp.Net Core -- 配置Kestrel端口
- 【翻译】在Visual Studio中使用Asp.Net Core MVC创建第一个Web Api应用(二)
- 微信快速开发框架(一)-- 对微信公众平台开发的消息处理
- 微信快速开发框架(二) -- 快速开发微信公众平台框架---简介
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux 安装二进制MySQL 及 破解MySQL密码的方法
- Linux创建进程达到65535的方法
- SSH 上传文件及文件夹到linux服务器的方法
- apache tika检测文件是否损坏的方法
- Linux下二进制编译安装MySql centos7的教程
- Linux 6 修改ssh默认远程端口号的操作步骤
- 基于python的Linux系统指定进程性能监控思路详解
- ubuntu下的虚拟环境中安装Django的操作方法
- 详解linux下umask的使用
- Linux下设置每天自动备份数据库的方法
- Linux常用命令之chmod修改文件权限777和754
- 解决CentOS 7升级Python到3.6.6后yum出错问题总结
- Linux下如何挂载磁盘的方法示例
- centos7 PHP环境搭建 GD库 等插件安装方法
- CentOS服务器环境下MySQL主从同步配置方法