標籤:import str 地址 port for client ota 字串 bitmap
主要是記錄一下Redis的setbit的用法。
- 一個字串,我們如何用Redis的setBit儲存下來。
import org.junit.Test;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import java.util.BitSet;public class BitMapTest { private static final String REDIS_PATH="127.0.0.1"; //ip地址 private static final int REDIS_PORT=6379; //連接埠號碼 private static final String REDIS_AUTH="iostream"; private static final JedisPool jedisPool; static { //配置JedisPool JedisPoolConfig config=new JedisPoolConfig(); config.setMaxTotal(10); final int timeout=2000; jedisPool=new JedisPool(config,REDIS_PATH,REDIS_PORT,timeout,REDIS_AUTH); } private static int pos=0; //pos是記錄下一個字元是從哪個開始的 假設第一個字元h第一個bit的pos是0,那麼第二個字元e的第一個bit的pos是8,累加上去的。 private static void solve(String binStr,Jedis jedis){ //因為我們用Integer.toBinaryString會省略高位的0 //所以我們需要把0先補上 StringBuilder sb=new StringBuilder(); if(binStr.length()<8){ for(int i=0;i<8-binStr.length();++i){ sb.append(0); } sb.append(binStr); } binStr=sb.toString(); for(int i=0;i<8;++i){ if(binStr.charAt(i)==‘0‘){ jedis.setbit("test",pos+i,false); }else { jedis.setbit("test",pos+i,true); } } pos+=8; } public static void main(String[] args) { Jedis jedis=jedisPool.getResource(); String s="hello"; try { for (int i = 0; i < s.length(); i++) { String binStr=Integer.toBinaryString(s.charAt(i)); //將取ASCII編的值並轉化成二進位 一個char是兩個位元組(byte) 1byte=4bit 一個char有8bit 所以上限是127. //byte和bit的區別要記得 solve(binStr,jedis); } System.out.println(jedis.get("test")); }finally { jedis.close(); } }}
Redis實踐 -位元影像