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

 

命令行數據測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章