<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 1. String (字符類型) ``` set key 1 get key INCR key DECR key 追加 append key 33 4 字符長度 strlen key ``` 使用場景 使用的是最多的, 像保存登錄人信息, 保存驗證碼, 保存流水號, 像字符串的遞增數值 INCR key 和 遞減數值 DECR key 可以用來做 播放量 閱讀量等 ## 2. Hash (散列類型) ``` 結構類似 Map<String, Map<Object, Object>> 多個的時候 有個m hset name key1 value1 hget name key2 獲取key中的一個值 hmset name key1 value1 key2 value2 hmget name key1 key2 獲取key中的多個值 hgetall name 獲取key的所有值 hdel name key1 hlen name 獲取key的全部數量 hdel name 增量是1 hset age 張三 18 hincrby age 張三 1 就從18變成19了 hincrby age 張三 -1 就從19變回18了 ``` 使用場景:購物車 shopCar:uid + 用戶id 做key 新增商品:hset shopCar:uid111 555 1 再新增商品:hset shopCar:uid111 556 1 購物車現有商品數量增加1個: hincrby shopCar:uid111 555 1 總數: hlen shopCar:uid111 全選: hgetall shopCar:uid111 ## 3. List (列表類型) 按照添加順序保存, 可做排序的業務, 相當于按照添加時間倒序保存的 盡量不要做分頁, 因為當添加的數據過快, 原來是在第一頁顯示, 后來有添加了數據, 就會導致之前第一頁顯示的, 又在第二頁 或第n頁再顯示。后面的數據一直在添加, 這樣原來是最新的數據, 就變成舊數據了, 頁碼里的數據也就會重復了 ``` 在 key 對應 list 的頭部添加字符串元素 lpush name value 在 key 對應 list 的尾部添加字符串元素 rpush name value 返回 key 對應 list 的長度 llen name 讀取列表 lrange name 0 9 ``` 使用場景: 商品足跡 lpush 商品足跡:userId 商品id1 商品id2 使用場景:訂閱號 lpush likeArticle:userId 文章id1 文章id2 文章id3 // 前 10 條 lrange likeArticle:userId 0 9 ## 4. Set (集合類型) ``` 集合差集 屬于A但不屬于B SDIFF keyA keyB [key...] 集合交集 屬于A同時也屬于B SINTER keyA keyB [key...] 集合并集 屬于A或者屬于B的元素合并后的集合 SUNION keyA keyB [key...] 添加 SADD name value 移除集合中一個或多個成員 SREM name value[value2] 獲取key 的全部成員 smembers name 獲取key 的總數 scard key 隨機選擇n個元素, 元素不刪除 srandmember key n 隨機選擇n個元素, 元素會刪除 spop key n 判斷 value 元素是否是集合 key 的成員 SISMEMBER key value ``` 使用場景:抽獎 srandmember key n 和 spop key n 用作抽獎 如 獎品是一個手機 則key是手機id, value 則是一個個用戶id 使用場景:點贊 sadd like:videoId userId1 userId2 userId3 新增點贊 srem like:videoId userId3 刪除點贊 smembers like:videoId 點贊用戶列表 scard like:videoId 點贊總數 sismember like:videoId userId2 判斷某個用戶是否點贊 使用場景:關注 sadd follow:meFollow:11 2 3 5 6 19 我關注的 sadd follow:followMe:11 5 14 16 9 關注我的 sadd follow:followMe:2 15 14 36 19 關注用戶 2 的 sadd follow:meFollow:2 5 33 45 99 用戶 2 關注的 SINTER follow:meFollow:11 follow:followMe:11 我關注他, 他也關注我 SINTER follow:meFollow:11 follow:meFollow:2 11和 2 共同關注的 SINTER follow:meFollow:11 follow:followMe:2 我關注的人, 同時也關注他 (用戶11 關注用戶19 和 用戶2, 同時用戶19也關注 用戶2) 使用場景:qq 內推 可能認識的人 使用 SDIFF keyA keyB 或者 SDIFF keyB keyA 互相取差集 ## 5. SortedSet(有序集合 簡稱 zset) 做排序分頁 ``` 添加一個元素和該元素的分數 分數在前(score) zadd key score member zadd code 1 java zadd code 2 css zadd code 3 html 按照分數從小到大的順序 返回索引從start 到 stop之間的元素 zrange key start stop [WITHSCORES] zrange code 0 2 WITHSCORES 獲取元素的分數 zscore key member 刪除 元素 zrem key member 獲取指定分數范圍的元素 zrangebyscore key min max [WITHSCORES] [limit offset count] 獲取指定分數范圍的元素 前5個 zrangebyscore key min max limit 0 5 增加某個元素的分數 zincrby key increment member zincrby key 5 member 增加5分 獲取集合中元素的數量 zcard key 獲取指定分數范圍內的元素個數 zcount key min max 按照排名范圍刪除元素 zremrangebyrank key start stop 從小到大排名 zrank key member 從大到小排名 zrevrank key member ``` 使用場景: 排行榜 熱搜 zadd goods:sell 20 1111 50 2222 商品 1111 售出20 , 商品2222 售出 50 zrange goods:sell 0 9 withscores 前10 zincrby goods:sell 3 1111 商品 1111 又售出3 實戰: 抖音面試題=> 獲取抖音視頻最新評論留言 涉及排序 分頁 高并發 可以使用 list 和 zset list 做分頁可能會導致分頁數據重復, 因為每次添加都會頂到最前面 zset 把時間戳到分數, 視頻id 做值 zadd 抖音視頻最新評論 時間戳 視頻id 時間戳 視頻id zrank zrevrank 進行從小到大和從大到小排序 ## 6. Bigmap(位圖) ``` 給指定 key 的值 的第 offset 賦值val setbit key offset val 獲取指定 key 的第offset位 getbit key offset 返回指定 key 中 [start, end] 中為1的數量 bitcount key start end 對不同的二進制存儲數據進行位運算(AND OR NOT XOR) bigop operation destkey key ``` bigmap 支持位數是2的32次方位, 512m大小 由0和1狀態表現的二進制位的big數組 , 從0開始 底層是用String實現, get 命令也能獲取, 獲取道德是 ascii碼 strlen 獲取長度時, 每8位是一個長度 setbit key 6 0 使用 strlen key 獲取的長度是1 setbit key 23 0 使用 strlen key 獲取的長度是3 setbit key 364 0 使用 strlen key 獲取的長度是46 場景: 用于狀態統計, 用戶是否登錄過, 如京東每日簽 到送京豆, 電影、廣告是否被點擊播放過 釘釘打卡上下班, 簽到統計 日活統計 連續簽到打卡 最近一周的活躍用戶 統計指定用戶一年中的登錄天數 某用戶按照一年365天, 哪幾天登陸過 簽到:mysql 也能做, 數據量小可以用,數據量大了就算了。 按月=> key =>業務前綴:用戶id:年月 , 從0開始 0 未簽到, 1簽到了 setbig sign:uid1:202101 0 1 2021年1月1日 簽到了 setbig sign:uid1:202101 1 1 2021年1月2日 簽到了 setbig sign:uid1:202101 20 1 2021年1月21日 簽到了 getbit sign:uid1:202101 0 判斷 2021年1月1日 是否簽到 這個返回1 getbit sign:uid1:202101 10 判斷 2021年1月11日 是否簽到 這個返回0 bigcount sign:uid1:202101 2021年1月簽到總數 bigcount sign:uid1:202101 0 9 2021年1月1日到10日 簽到總數 按年=> key =>業務前綴:用戶id:年 , 從0開始 setbig sign:uid1:2021 0 1 2021年第一天 簽到了 setbig sign:uid1:2021 364 1 2021年第365天 簽到了 其他和按月的一樣, 就是key變了 ## 7. HyperLogLog(統計) 1\. 去重復 2\. 不直接存儲數據本身 3\. 通過犧牲準確率來換取空間, 它不準確 UV(Unique visitor):指通過互聯網訪問、瀏覽這個網頁的自然人。00:00-24:00 同一個訪客多次訪問算一次 PV(Page View):瀏覽量或點擊量 VV(Visit View):訪客1天內訪問網站的次數。 DAU:daily active user(日活躍用戶) MAU:monthly active user(月活躍用戶) PV與VV區別:PV是指頁面的瀏覽次數,VV是指你訪問網站的次數。 統計某個網站的UV 統計某個文章的UV 用戶搜索網站關鍵詞的數量 統計用戶每天搜索不同詞條個數 基數統計:統一一個集合中不重復的元素個數 基數:是一種數據集,去重復后的真實個數 ``` 將所有元素添加到 key 中 pfadd key element1 element2 element3 統計 key 的估算值(不精確) pfcount key 合并去重 key 至新key pgmerge new_key key1 key2 ``` 8. GEO(地理) geo 本質是 zset type key 會返回zset ``` 添加地理位置的坐標 geoadd key longitude latitude member [longitude latitude member ...] 獲取地理位置的坐標 geopos key member [member ...] 計算兩個位置之間的距離 geodist key member1 member2 [m|km|ft|mi] 根據用戶給定的經緯度坐標來獲取指定范圍內的地理位置集合,用的最多, 像外賣平臺的 查找多少km內的的商家 georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key] 根據儲存在位置集合里面的某個地點獲取指定范圍內的地理位置集合 georadiusbymember key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key] 返回一個或多個位置對象的 geohash 值 geohash key member [member ...] ``` [https://www.runoob.com/redis/redis-geo.html](https://www.runoob.com/redis/redis-geo.html) geo 命令
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看