redis-數據類型及樣例

一.string 類型數據的基本操作

1.添加/修改數據

set key value

2.獲取數據

get key

3.刪除數據

del key

4.添加/修改多個數據

mset key1 value1 key2 value2

5.獲取多個數據

mget key1 key2

二.list類型的基本操作

  • 數據存儲需求:存儲多個數據,并對數據進入存儲的順序進行區分
  • 需要的存儲結構:一個存儲空間保存多個數據,且通過數據可以體現進入順序
  • list類型:保存多個數據,底層是用雙向鏈表的存儲結構實現的。

1.lpush/rpush key value1 [value2] …… :添加數據

可以看出我們先從左邊放入一個huawei,再從左邊放入一個apple,然后繼續向左邊放入一個microsoft,因此打印的順序是從左到右,即:microsoft,apple,huawei.

可以自行測試rpush和rpush、lpush的聯合使用。

2.lrange key start stop :獲取范圍數據

我們可以金桔list里面的索引來獲取數據,其中第一個數據的下標為0,和數組的編號方式一樣,但是不同的是,在list中最后一個元素的索引為-1,倒數第二個元素的編號為-2,因此在list中每個元素有兩個索引,從左到右從0開始編號,從右往左從-1開始編號。測試如下圖:

3.lindex key index:獲取index索引位置上的值?

4.llen key:獲取list中值的個數?

?5?lpop/rpop key:獲取并移除數據

list中最牛X的操作就是lpush/rpush配合lpop/rpop 來使用。

?三.set類型的基本操作

與List相比,Set集合中的元素不允許重復,一個集合中最多可以對應2^32-1(4294967295)個元素。

1. 基本命令

對我們來說,常用的Set命令有如下幾種

?2.插入操作

?3. 查詢操作

?4. 刪除操作

?四.zset類型的基本操作

1.常用命令

?2.示例

zadd <key><score1><value1><score2><value2>...

????????將一個或多個member元素及其score值加入到有序集key當中。

zrange <key><start><stop>[WITHSCORES]?
? ? ? ? 返回有序集key中,下標在<start><stop>之間的元素帶WITHSCORES,可以讓分數一起和值返回到結果集。

0到-1就是返回全部的元素,從小到大排列。

加上withsorces 可以附帶著分數返回

zrangebyscore key min max [withscores] [limit offset count]
? ? ? ? 返回有序集 key 中,所有score值介于min和max 之間(包括等于min或max )的成員。有序集成員按score值遞增(從小到大)次序排列。

zrevrangebyscore key max min [withscores] [limit offset count]
? ? ? ? 同上,改為從大到小排列。

zincrby <key><increment><value>

????????為元素的score加上增量

zrem <key><value>

????????刪除該集合下,指定值的元素v

zcount <key><min><max>

????????統計該集合,分數區間內的元素個數。

zrank <key><value>

????????返回該值在集合中的排名,從0開始。

五.hash類型的基本操作

    1、往redis庫中插入一條hash類型的數據redis> hset  key  field  value舉例:redis 127.0.0.1:6379> hset  user001:zhangsan  iphone  6(integer) 1redis 127.0.0.1:6379> hset  user001:zhangsan  xiaomi  7(integer) 1redis 127.0.0.1:6379> hset  user001:zhangsan  meizu  8(integer) 1在redis庫中就形成了這樣一條數據:
    2、從redis庫中獲取一條hash類型數據的value取出一條hash類型數據中所有field-value對redis 127.0.0.1:6379> hgetall  user001:zhangsan1) "iphone"2) "6"3) "xiaomi"4) "7"5) "meizu"6) "8"取出hash數據中所有fieldsredis 127.0.0.1:6379> hkeys  user001:zhangsan1) "iphone"2) "xiaomi"3) "meizu"取出hash數據中所有的valueredis 127.0.0.1:6379> hvals  user001:zhangsan1) "6"2) "7"3) "8"取出hash數據中一個指定field的值redis 127.0.0.1:6379> hget  user001:zhangsan  xiaomi"7"為hash數據中指定的一個field的值進行增減redis 127.0.0.1:6379> hincrby  user001:zhangsan  xiaomi  1(integer) 8從hash數據中刪除一個字段field及其值redis 127.0.0.1:6379> hgetall  user001:zhangsan1) "iphone"2) "6"3) "xiaomi"4) "7"5) "meizu"6) "8"redis 127.0.0.1:6379> hdel  user001:zhangsan  iphone(integer) 1redis 127.0.0.1:6379> hgetall  user001:zhangsan1) "xiaomi"2) "7"3) "meizu"4) "8"應用場景:購物車案例public class BuyCartServiceImpl {private Jedis jedis = null;@Beforepublic void init(){jedis = new Jedis("192.168.2.70",6379);}// 添加商品到購物車@Testpublic void testAddItemToCart(){jedis.hset("cart:user02", "小米沙發", "1");jedis.hset("cart:user02", "蘋果手機", "2");jedis.hset("cart:user02", "格力空調", "4");jedis.close();}// 遍歷購物車信息@Testpublic void testGetCartInfo(){Map<String, String> cart = jedis.hgetAll("cart:user02");Set<Entry<String, String>> entrySet = cart.entrySet();for(Entry<String, String> ent :entrySet){System.out.println(ent.getKey()+ ":" + ent.getValue());}jedis.close();}// 更改購物車@Testpublic void editCart(){//給蠟燭商品項的數量加1jedis.hincrBy("cart:user02", "小米沙發", 1);jedis.close();}// 從購物車中刪除商品項@Testpublic void delItemFromCart(){jedis.hdel("cart:user02", "蘋果手機");jedis.close();}}從上面可見,用redis做購物車簡直太方便了。

六.bitmaps類型的基本操作

1.bitmap概念

1:BitMap,即位圖,其實也就是 byte 數組,用二進制表示,只有 0 和 1 兩個數字。

2:bitmap并不是一種數據結構,實際上它就是字符串,但是可以對字符串的位進行操作。

3:bitmap有自己的一套命令。可以把bitmap想象成一個以bit為單位的數組,數組的每個單元存儲0和1,數組的下標叫做偏移量。

2.設置name = "@"

?3.設置name='A'

4.設置name='A@'

七.hyperloglog類型的基本操作

?1、hyperloglog 簡介

????????Redis 中 hyperloglog 數據類型是 2.8.9 版本引入的,是一種概率數據結構,用來估算數據的基數。基數就是指一個集合中不同值的數目,比如 a, b, c, d 的基數就是 4,a, b, c, d, a 的基數還是 4。雖然 a 出現了兩次,但是只會被計算一次。
?????????hyperloglog 通常用來統計一個集合中不重復的元素個數。一個很常見的例子就是統計某個文章的 UV(Unique Visitor,獨立訪客,一般可以理解為客戶端 IP)。精確的計算數據集的基數需要消耗大量的內存來存儲數據集。在遍歷數據集時,判斷當前遍歷值是否已經存在唯一方法就是將這個值與已經遍歷過的值進行一一對比。當數據集的數量越來越大,內存消耗就無法忽視,甚至成了問題的關鍵。
????????使用 Redis 統計集合的基數一般有三種方法,分別是使用 Redis 的 hashmap,bitmap 和 hyperloglog。前兩個數據結構在集合的數量級增長時,所消耗的內存會大大增加,但是 hyperloglog 則不會。

?2.hyperloglog 結構

1、hllhdr 定義

八.gepspatial類型的基本操作

1.geoadd 添加地理位置

# 規則:兩級無法直接添加,我們一般會下載城市數據,直接通過java程序一次性導入! 
# 有效的經度從-180度到180度。 
# 有效的緯度從-85.05112878度到85.05112878度。 
# 當坐標位置超出上述指定范圍時,該命令將會返回一個錯誤,如: 
127.0.0.1:6379> geoadd china:city 39.90 116.40 beijin 
(error) ERR invalid longitude,latitude pair 39.900000,116.400000 # 參數 key 值() 
127.0.0.1:6379> geoadd china:city 116.40 39.90 beijing 
(integer) 1 
127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai 
(integer) 1 
127.0.0.1:6379> geoadd china:city 106.50 29.53 chongqi 114.05 22.52 shengzhen 
(integer) 2 
127.0.0.1:6379> geoadd china:city 120.16 30.24 hangzhou 108.96 34.26 xian 
(integer) 2

2.geopos 獲得當前坐標值

127.0.0.1:6379> GEOPOS china:city beijing                           # 獲取指定的城市的經度和緯度! 
1) 1) "116.39999896287918091" 2) "39.90000009167092543" 
127.0.0.1:6379> GEOPOS china:city beijing chongqi 
1) 1) "116.39999896287918091" 2) "39.90000009167092543" 
2) 1) "106.49999767541885376" 2) "29.52999957900659211"

3.geodist 返回兩地之間的距離

127.0.0.1:6379> GEODIST china:city beijing shanghai km                 # 查看上海到北京的直線距離 
"1067.3788" 
127.0.0.1:6379> GEODIST china:city beijing chongqi  km                  # 查看重慶到北京的直線距離 
"1464.0708"

4.georadius 以給定的經緯度為中心, 找出某一半徑內的元素

127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km          # 以110,30 這個經緯度為中心,尋找方圓1000km內的城市 
1) "chongqi" 
2) "xian" 
3) "shengzhen" 
4) "hangzhou" 
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withdist                      # 顯示到中間距離的位置 
1) 1) "chongqi" 2) "341.9374" 
2) 1) "xian" 2) "483.8340" 
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withcoord                     # 顯示他人的定位信息 
1) 1) "chongqi" 2) 1) "106.49999767541885376" 2) "29.52999957900659211" 
2) 1) "xian" 2) 1) "108.96000176668167114" 2) "34.25999964418929977" 
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withdist withcoord count 1    # 篩選出指定數量的結果! 
1) 1) "chongqi" 2) "341.9374" 3) 1) "106.49999767541885376" 2) "29.52999957900659211" 
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withdist withcoord count 2 
1) 1) "chongqi" 2) "341.9374" 3) 1) "106.49999767541885376" 2) "29.52999957900659211" 
2) 1) "xian" 2) "483.8340" 3) 1) "108.96000176668167114" 2) "34.25999964418929977"

5.georadiusbymember 找出位于指定元素周圍的其他元素

127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijing 1000 km 
1) "beijing" 
2) "xian" 
127.0.0.1:6379> GEORADIUSBYMEMBER china:city shanghai 400 km 
1) "hangzhou" 
2) "shanghai"

6.geohash 返回元素的 Geohash


127.0.0.1:6379> geohash china:city beijing chongqi              
1) "wx4fbxxfke0" 
2) "wm5xzrybty0"

7.Geospatial 的其他操作 -查看,刪除

127.0.0.1:6379> ZRANGE china:city 0 -1           # 查看地圖中全部的元素 
1) "chongqi" 
2) "xian" 
3) "shengzhen" 
4) "hangzhou" 
5) "shanghai" 
6) "beijing" 
127.0.0.1:6379> zrem china:city beijing          # 移除指定元素! 
(integer) 1 
127.0.0.1:6379> ZRANGE china:city 0 -1 
1) "chongqi" 
2) "xian" 
3) "shengzhen" 
4) "hangzhou" 
5) "shanghai"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38650.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38650.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38650.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

day 0815

計算文件有多少行&#xff1f; 2.文件的拷貝

SpringBoot引入外部jar打包失敗解決,SpringBoot手動引入jar打包war后報錯問題

前言 使用外部手動添加的jar到項目&#xff0c;打包時出現jar找不到問題解決 處理 例如項目結構如下 引入方式換成這種 <!-- 除了一下這兩種引入外部jar&#xff0c;還是可以將外部jar包添加到maven中&#xff08;百度查&#xff09;--><!-- pdf轉word --><…

Installshield軟件項目打包學習

Installshield打包學習記錄 個人工作學習的一點點記錄&#xff0c;可能有不專業的表述&#xff0c;各位可以提出建議&#xff0c;共同學習。 目錄 Installshield打包學習記錄一、Installshield的幾個事件&#xff1a;1. Before Move Data&#xff08;安裝數據前&#xff09;1.…

前端代理配置

dev: {env: require(./dev.env),port: process.env.PORT || 8080,autoOpenBrowser: true,assetsSubDirectory: static,assetsPublicPath: /,proxyTable: {// 以 /party/fundamental/ 開頭的請求&#xff0c;全部轉發到 target 設置的地址/party/fundamental/: {// target: http…

【BASH】回顧與知識點梳理(二十八)

【BASH】回顧與知識點梳理 二十八 二十八. 例行性工作排程(crontab)28.1 什么是例行性工作排程Linux 工作排程的種類&#xff1a; at, cronCentOS Linux 系統上常見的例行性工作 28.2 僅執行一次的工作排程atd 的啟動at 的運作方式實際運作單一工作排程at 工作的管理batch&…

Windows下升級jdk1.8小版本

1.首先下載要升級jdk最新版本&#xff0c;下載地址&#xff1a;Java Downloads | Oracle 中國 2.下載完畢之后&#xff0c;直接雙擊下載完畢后的文件&#xff0c;進行安裝。 3.安裝完畢后&#xff0c;調整環境變量至新安裝的jdk位置 4.此時&#xff0c;idea啟動項目有可能會出…

ATF bl1 ufshc_dme_get/set處理流程分析

ATF bl1 ufshc_dme_get/set處理流程分析 UFS術語縮略詞1 ATF的下載鏈接2 ATF BL1 ufshc_dme_get/set流程3 ufs總體架構圖3.1 UFS Top Level Architecture3.2 UFS System Model 4 ufshc_dme_get/set函數接口詳細分析4.1 ufshc_dme_get4.2 ufshc_dme_set4.3 ufshc_send_uic_cmd4.…

nodejs+vue+elementui考研互助交流網站

語言 node.js 框架&#xff1a;Express 前端:Vue.js 數據庫&#xff1a;mysql 數據庫工具&#xff1a;Navicat 開發軟件&#xff1a;VScode 前端nodejsvueelementui,該系統采用vue技術和B/S結構進行開發設計&#xff0c;后臺使用MySQL數據庫進行數據存儲。系統主要分為兩大模…

大數據課程J2——Scala的基礎語法和函數

文章作者郵箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;廣東惠州 ▲ 本章節目的 ? 掌握Scala的基礎語法&#xff1b; ? 掌握Scala的函數庫&#xff1b; 一、Scala 基礎語法一 1. 概述 語句 說明 示例 var 用來聲明一個變量&#xff0c; 變量聲明后…

java面試題(16):Mysql一致性視圖是啥時候建立的

1 演示錯誤案例 先給大家來一個錯誤演示。 我們打開兩個會話窗口&#xff0c;默認情況下隔離級別是可重復讀&#xff0c;我們來看下&#xff1a; 首先在 A 會話中查看當前 user 表&#xff0c;查看完成后開啟事務&#xff1a; 可以看到id3的數據sex是男。 接下來在 B 會話中…

K8S系列一:概念入門

寫在前面 本文組織方式&#xff1a; K8S的架構、作用和目的。需要首先對K8S整體有所了解。 K8S是什么&#xff1f; 為什么是K8S&#xff1f; K8S怎么做&#xff1f; K8S的重要概念&#xff0c;即K8S的API對象。要學習和使用K8S必須知道和掌握的幾個對象。 Pod 實例 Volume 數…

php錯誤類型與處理

1 語法編譯錯誤&#xff0c;少了分號&#xff0c;這是系統觸發的錯誤&#xff0c;不需要我們去管。 2 錯誤類型有四種&#xff1a;error致命錯誤&#xff0c;代碼不會往下運行&#xff1b;warning&#xff1a;提醒錯誤&#xff0c;會往下運行&#xff0c;但是會有意想不到的結果…

【C++學習】STL容器——stack和queue

目錄 一、stack的介紹和使用 1.1 stack的介紹 1.2 stack的使用 1.3 stack的模擬實現 二、queue的介紹和使用 2.1 queue的介紹 2.2 queue的使用 2.3 queue的模擬實現 三、priority_queue的介紹和使用 3.1 priority_queue的介紹和使用 3.2 priority_queue的使用 3.4 p…

JVM---理解jvm之對象已死怎么判斷?

目錄 引用計數算法 什么是引用 可達性分析算法&#xff08;用的最多的&#xff09; 引用計數算法 定義&#xff1a;在對象中添加一個引用計數器&#xff0c;每當有一個地方引用它時&#xff0c;計數器值就加一&#xff1b;當引用失效時&#xff0c;計數器值就減一&#xff1…

國內外醫療器械政策法規網站集合

隨著醫療技術的不斷發展&#xff0c;醫療器械在現代醫療中扮演著重要的角色。為了確保醫療器械的安全性、有效性和質量&#xff0c;各國紛紛制定了一系列的政策法規來監管醫療器械的研發、生產、銷售和使用。這些政策法規的制定和實施對于保障公眾健康、促進醫療器械產業的健康…

docker--------介紹、常用命令,國內源配置

1 docker 國內源配置 # 鏡像&#xff1a;一堆文件 -目前從遠程倉庫下載的&#xff1a;https://hub.docker.com/ -鏡像有很多人提供&#xff1a;官方提供&#xff0c;第三方提供 -鏡像--》更新--》Tag不同版本 -centos:latest 最新 -docker pull 能找到…

舊版本docker未及時更新,導致更新/etc/docker/daemon.json配置文件出現docker重啟失敗

一、背景 安裝完docker和containerd之后&#xff0c;嘗試重啟docker的時候&#xff0c;報錯如下&#xff1a; systemctl restart dockerJob for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “…

學習ts(一)數據類型(基礎類型和任意類型)

運行 起步安裝 npm install typescript -g 運行tsc index.ts生成對應的js文件&#xff0c;然后使用node index.js執行js文件 為了方便運行還可以安裝插件&#xff0c;ts-node index.ts運行即可 npm i ts-node -g npm init -y npm i types/node -D基本數據類型 // 1.字符…

探索不同類型的代理服務器 (代理 IP、socks5 代理)及其在網絡安全與爬蟲中的應用

1. 代理服務器簡介 代理服務器是一臺充當中間人的服務器&#xff0c;它在客戶端與目標服務器之間傳遞網絡請求。代理服務器在不同層級上可以執行不同的任務&#xff0c;包括緩存、過濾、負載均衡和隱藏客戶端真實IP地址等。在網絡安全和爬蟲領域&#xff0c;代理服務器具有重要…

ARM(匯編指令)

.global _start _start:/*mov r0,#0x5mov r1,#0x6 bl LoopLoop:cmp r0,r1beq stopsubhi r0,r0,r1subcc r1,r1,r0mov pc,lr*/ mov r0,#0x1mov r1,#0x0mov r2,#0x64bl Loop Loop:cmp r0,r2bhi stopadd r1,r1,r0add r0,r0,#0x01mov pc,lr stop:B stop.end