bitmaps最大的優點是:可以節省大量空間。例如,在以增量使用者id表示不同使用者的系統中,僅使用512 mb記憶體就可以記住40億使用者的一位資訊(例如,知道使用者是否要接收新聞通訊)。
凡是只有兩個狀態的資料都可以用bitmaps儲存,最後用來統計,比如活躍使用者和不活躍使用者,登入和未登入,打卡和未打卡
(integer) 0
127.0.0.1:6379> setbit online:user 1 0
(integer) 0
127.0.0.1:6379> setbit online:user 2 0
(integer) 0
127.0.0.1:6379> setbit online:user 2 2 # 只能設定0或1,否則報錯
(error) err bit is not an integer or out of range
127.0.0.1:6379> getbit online:user 0
(integer) 1
127.0.0.1:6379> getbit online:user 1
(integer) 0
127.0.0.1:6379> getbit online:user 2
(integer) 0
127.0.0.1:6379> bitcount online:user
(integer) 1
127.0.0.1:6379> bitcount online:user 0 -1
(integer) 1
127.0.0.1:6379> setbit online:user 3 1
(integer) 0
127.0.0.1:6379> bitcount online:user 0 -1
(integer) 2
127.0.0.1:6379> bitpos online:user 0
(integer) 1 # 0第一次出現在下標為1的位置
127.0.0.1:6379> bitpos online:user 1
(integer) 0 # 1第一次出現在下標為0的位置
127.0.0.1:6379> setbit key 0 1 # 第0個位元組第乙個位
(integer) 0
127.0.0.1:6379> setbit key 1 1
(integer) 0
127.0.0.1:6379> setbit key 2 1
(integer) 0
127.0.0.1:6379> setbit key 3 0
(integer) 0
127.0.0.1:6379> setbit key 4 0
(integer) 0
127.0.0.1:6379> setbit key 5 1
(integer) 0
127.0.0.1:6379> setbit key 6 1
(integer) 0
127.0.0.1:6379> setbit key 7 1 # 第0個位元組第八個位
(integer) 0
127.0.0.1:6379> setbit key 8 1 # 第1個位元組第乙個位
(integer) 0
127.0.0.1:6379> setbit key 9 1
(integer) 0
127.0.0.1:6379> setbit key 10 0
(integer) 0
127.0.0.1:6379> bitpos key 0
(integer) 3
127.0.0.1:6379> bitpos key 0 0 1 # 0-1位元組可以在第0個位元組中找到
(integer) 3
127.0.0.1:6379> bitpos key 0 1 2 # 1-2位元組可以在第1個位元組中找到
(integer) 10
127.0.0.1:6379> bitpos key 0 2 3 # 找不到,總共只有1byte+3bit
(integer) -1
127.0.0.1:6379> setbit key1 0 0
(integer) 0
127.0.0.1:6379> setbit key1 1 1 # key1 01
(integer) 0
127.0.0.1:6379> setbit key2 0 1
(integer) 0
127.0.0.1:6379> setbit key2 1 1 # key2 11
(integer) 0
127.0.0.1:6379> bitop and andres key1 key2 # key1 & key2 01
(integer) 1
127.0.0.1:6379> getbit andres 0
(integer) 0
127.0.0.1:6379> getbit andres 1
(integer) 1
127.0.0.1:6379> bitop or orres key1 key2 # key1 | key2 11
(integer) 1
127.0.0.1:6379> getbit orres 0
(integer) 1
127.0.0.1:6379> getbit orres 1
(integer) 1
127.0.0.1:6379> bitop not notres key1 # !key1 10
(integer) 1
127.0.0.1:6379> getbit notres 0
(integer) 1
127.0.0.1:6379> getbit notres 1
(integer) 0
127.0.0.1:6379> bitop xor xorres key1 key2 # 如果a、b兩個值不相同,則異或結果為1。如果a、b兩個值相同,異或結果為0。
(integer) 1
127.0.0.1:6379> getbit xorres 0
(integer) 1
127.0.0.1:6379> getbit xorres 1
(integer) 0
Redis之資料型別
與mysql資料庫支援的多種資料型別相比,redis資料庫支援的資料型別要少上許多。redis資料庫支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 string 是 redis 最基本的型別,你可以理解成與 memcac...
Redis 資料型別之雜湊型別
營口小書生 2017 05 11 15 26 redis 有很多種型別,現在我們不用想太多,看此篇文章,你只需要記得你 雜湊型別 就好 雜湊型別顧名思義就是字段分開儲存的,可以自由更改值,不需要先讀取整篇內容在更改其中乙個 然後在儲存更新原有的,這樣是不是很簡單啊,還能保證資料的一致性,不用擔心改錯...
Redis資料型別之ZSet型別
有序集合 sorted set 1 redis 有序集合和集合一樣,也是string型別元素的集合,且不允許有重複的成員。2 不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。3 有序集合的成員是唯一的,但分數 score 卻可以重複。4 ...