一、Redis 鍵(key)
1、Redis 鍵命令用于管理 redis 的鍵。
2、Redis 鍵命令的基本語法如下:redis 127.0.0.1:6379> COMMAND KEY_NAME
3、常用key命令
keys * 獲取所有的keyselect 0 選擇第一個庫move myString 1 將當前的數據庫key移動到某個數據庫,目標庫有,則不能移動flush db 清除指定庫randomkey 隨機keytype key 類型set key1 value1 設置keyget key1 獲取keymset key1 value1 key2 value2 key3 value3mget key1 key2 key3del key1 刪除keyexists key 判斷是否存在keyexpire key 10 10過期pexpire key 1000 毫秒persist key 刪除過期時間
二、Redis 字符串(String)
1、Redis 字符串數據類型的相關命令用于管理 redis 字符串值,基本語法如下:COMMAND KEY_NAME
2、常用命令
set name cxx 設置name為cxxget name 獲取namegetrange name 0 -1 字符串分段getset name new_cxx 設置值,返回舊值mset key1 key2 批量設置mget key1 key2 批量獲取setnx key value 不存在就插入(not exists)setex key time value 過期時間(expire)setrange key index value 從index開始替換valueincr age 遞增incrby age 10 遞增decr age 遞減decrby age 10 遞減incrbyfloat 增減浮點數append 追加strlen 長度getbit/setbit/bitcount/bitop 位操作
三、Redis 哈希(Hash)
1、Redis hash 是一個string類型的field和value的映射表,hash特別適合用于存儲對象。
? ? ?Redis 中每個 hash 可以存儲 232?- 1 鍵值對(40多億)。
2、常用命令
hset myhash name cxxhget myhash namehmset myhash name cxx age 25 note "i am notes"hmget myhash name age note hgetall myhash 獲取所有的hexists myhash name 是否存在hsetnx myhash score 100 設置不存在的hincrby myhash id 1 遞增hdel myhash name 刪除hkeys myhash 只取keyhvals myhash 只取valuehlen myhash 長度
四、Redis 列表(List)
1、Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)
一個列表最多可以包含 232?- 1 個元素 (4294967295, 每個列表超過40億個元素)。
2、常用命令
lpush mylist a b c 左插入 rpush mylist x y z 右插入 lrange mylist 0 -1 數據集合 lpop mylist 彈出元素 rpop mylist 彈出元素 llen mylist 長度 lrem mylist count value 刪除 lindex mylist 2 指定索引的值 lset mylist 2 n 索引設值 ltrim mylist 0 4 刪除key linsert mylist before a 插入 linsert mylist after a 插入 rpoplpush list list2 轉移列表的數據
五、Redis 集合(Set)
1、Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現重復的數據。
2、Redis 中集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。
集合中最大的成員數為 232?- 1 (4294967295, 每個集合可存儲40多億個成員)。
3、常用命令
sadd myset redis 向名為myset集合中插入元素redis smembers myset 數據集合 srem myset set1 刪除 sismember myset set1 判斷元素是否在集合中 scard key_name 個數 sdiff | sinter | sunion 操作:集合間運算:差集 | 交集 | 并集 srandmember 隨機獲取集合中的元素 spop 從集合中彈出一個元素
六、Redis 有序集合(sorted set)
1、Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復的成員。
? 不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
2、有序集合的成員是唯一的,但分數(score)卻可以重復。
3、集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是O(1)。 集合中最大的成員數為 232 - 1?(4294967295, 每個集合可存儲40多億個成員)。
4、常用命令
zadd zset 1 one 向名為zset的有序集合中添加值one并關聯上分數1 zadd zset 2 two zadd zset 3 three zincrby zset 1 one 增長分數 zscore zset two 獲取分數 zrange zset 0 -1 withscores 范圍值 zrangebyscore zset 10 25 withscores 指定范圍的值 zrangebyscore zset 10 25 withscores limit 1 2 分頁 Zrevrangebyscore zset 10 25 withscores 指定范圍的值 zcard zset 元素數量 Zcount zset 獲得指定分數范圍內的元素個數 Zrem zset one two 刪除一個或多個元素 Zremrangebyrank zset 0 1 按照排名范圍刪除元素 Zremrangebyscore zset 0 1 按照分數范圍刪除元素 Zrank zset 0 -1 分數最小的元素排名為0 Zrevrank zset 0 -1 分數最大的元素排名為0
七、Redis HyperLogLog
1、Redis HyperLogLog 是用來做基數統計的算法,HyperLogLog 的優點是,在輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定的、并且是很小的。
? 在Redis里面,每個 HyperLogLog 鍵只需要花費 12 KB 內存,就可以計算接近 2^64 個不同元素的基 數。這和計算基數時,元素越多耗費內存就越多的集合形成鮮明對比。
? 但是,因為 HyperLogLog 只會根據輸入元素來計算基數,而不會儲存輸入元素本身,所以 HyperLogLog 不能像集合那樣,返回輸入的各個元素。
2、基數:集合中不同元素的數量。比如 {'apple', 'banana', 'cherry', 'banana', 'apple'} 的基數就是 3 。
估算值:算法給出的基數并不是精確的,可能會比實際稍微多一些或者稍微少一些,但會控制在合理的范圍之內。
3、常用命令:
PFADD key element [element ...]:將任意數量的元素添加到指定的 HyperLogLog 里面。
PFCOUNT key [key ...] :?返回給定 HyperLogLog 的基數估算值
PFMERGE destkey sourcekey [sourcekey ...]:將多個 HyperLogLog 合并為一個 HyperLogLog ,合并后的 HyperLogLog 的基數估算值是通過對所有
給定 HyperLogLog 進行并集計算得出的。
?
借鑒博客:https://www.cnblogs.com/cxxjohnson/p/9072383.html
https://www.runoob.com/redis/redis-hyperloglog.html
https://www.cnblogs.com/ysuzhaixuefei/p/4052110.html