天下之事,必先处之难,而后易之。

Redis中bitmap用于用户在线状态的数量统计

目录

Java测试

命令行数据测试


REDIS bitmap统计用户在线测试(可以针对用户单位快速统计,redis函数统计只返回在线数量)。

文章思想参考:第十章:Redis中bitmap的妙用

Java测试

Redis工具就不提供了,Jedis里面有提供,自己封装即可。

package test;


import java.util.List;
import java.util.Set;
import com.xxx.redis.RedisNodeManagerUtil;
import com.xxx.redis.RedisNodeManger;

public class RedisTest {
	
	String node = "aliyun";
	
	String dwCode = "xxxxxxxxxxx";
	
	static {
		RedisNodeManger.init();
	}
	
	
	/**
	 * 用户在线删除
	 */
	public void bitmapUserDelKey(){
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		String key = dwCode;
		RedisNodeManagerUtil.del(node, key);
	}
	
	/**
	 * 用户在线离线设置
	 */
	public void bitmapUserIdValues(){
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		long offset = 2020*1000;
		String key = dwCode;// 单位编码标识:在线数量
		for (int i = 10; i < 21; i++) {
			if(i%2 == 0){
				RedisNodeManagerUtil.setbit(node, key, offset+i, true);
			}else{
				RedisNodeManagerUtil.setbit(node, key, offset+i, false);
			}
		}
		Long count = RedisNodeManagerUtil.bitcount(node, key);
		System.out.println("true count key:"+count);
	}

	/**
	 * 统计在线数量
	 */
	public void bitmapCount(){
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		String key = dwCode;
		Long count = RedisNodeManagerUtil.bitcount(node, key);
		System.out.println("count key:"+count);
		count = RedisNodeManagerUtil.bitcount(node, key, 0, Long.MAX_VALUE);
		System.out.println("count range key:"+count);
		/*count = RedisNodeManagerUtil.bitpos(node, key, true);
		System.out.println("bitpos true:"+count);
		count = RedisNodeManagerUtil.bitpos(node, key, false);
		System.out.println("bitpos false:"+count);*/
	}
	
	/**
	 * 函数入口
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		
		RedisTest test = new RedisTest();
		test.bitmapUserDelKey();
		test.bitmapUserIdValues();
		test.bitmapCount();
		
	}

}

测试结果:

Redis初始化完成
192.168.1.189:6379 redis节点初始化完成
true count key:6
count key:6
count range key:6

 

命令行数据测试

posted @ 2024-10-07 09:08  boonya  阅读(47)  评论(0)    收藏  举报  来源
我有佳人隔窗而居,今有伊人明月之畔。
轻歌柔情冰壶之浣,涓涓清流梦入云端。
美人如娇温雅悠婉,目遇赏阅适而自欣。
百草层叠疏而有致,此情此思怀彼佳人。
念所思之唯心叩之,踽踽彳亍寤寐思之。
行云如风逝而复归,佳人一去莫知可回?
深闺冷瘦独自徘徊,处处明灯影还如只。
推窗见月疑是归人,阑珊灯火托手思忖。
庐居闲客而好品茗,斟茶徐徐漫漫生烟。

我有佳人在水之畔,瓮载渔舟浣纱归还。
明月相照月色还低,浅近芦苇深深如钿。
庐山秋月如美人衣,画堂春阁香气靡靡。
秋意幽笃残粉摇曳,轻轻如诉画中蝴蝶。
泾水潺潺取尔浇园,暮色黄昏如沐佳人。
青丝撩弄长裙翩翩,彩蝶飞舞执子手腕。
香带丝缕缓缓在肩,柔美体肤寸寸爱怜。
如水之殇美玉成欢,我有佳人清新如兰。
伊人在水我在一边,远远相望不可亵玩。