Redis資料庫2

來源:互聯網
上載者:User

標籤:sre   防火牆   import   isp   value   public   概述   多個   時間複雜度   

一.儲存list
1.概述
     list類型是按照插入順序排序的字串鏈表,可以在頭部(left)和尾部(right)添加新的元素,如果不存在,則自動建立;如果list中所有元素被移除,則list也會消失;
     ArrayList:使用數組方式儲存資料,有索引,所以查詢快,增刪慢(增刪涉及到位移操作);
     LinkedList:為雙向鏈表,每個元素都記錄前後元素的指標,插入/刪除時只更改前後元素的指標即可,速度較快,查詢時需從頭計算,速度較慢;
2.常用命令
     2.1添加
     lpush list01 a #頭部添加(left)
     rpush list01 b #尾部添加(right)
     2.2查看
     lrange list01 0 -1 #查看從第1個到倒數第1個元素之間的所有元素,即所有元素;
     lrange list01 0 -2 #查看從第1個到倒數第2個元素之間的所有元素;
     2.3彈出
     lpop list01 #彈出頭部元素(left);
     rpop list01 #彈出尾部元素(right);
     2.4擷取列表中元素個數
     llen list01
     2.5僅向存在的列表中添加元素,若列表不存在,則添加失敗
     lpushx list01 c  #頭部添加
     rpushx list01 d #尾部添加
     2.6刪除
     lrem list01 2 a #刪除list01中最左邊的2個a元素;
     lrem list01 -2 a #刪除list01中最右邊的2個a元素;
     lrem list01 0 a #刪除list01中所有的a元素;
     2.7修改
     lset list01 3 m #設定list01中索引為3的元素為m; 0代表頭元素/1代表尾元素/索引不存在則拋出異常
     2.8插入
     linsert list01 before 2 1 #在list01中的2元素左邊插入元素1;
     linsert list01 after 2 1 #在list01中的2元素右邊插入元素1;
     2.9去尾添頭
     rpoplpush list01  list02 #將list01中的尾部元素添加到list02的頭部;


二.儲存set
1.概述
     set為無序集合,不包含重複資料,可以在服務端完成集合的交/並/差的計算,效率極高.且進行增/刪/判斷是否存在時,時間複雜度為O(1);
2.常用命令
     2.1添加
     sadd set01 a b c  #如果set01中已有a,則不會重複添加
     2.2刪除
     srem set01 a #刪除a元素
     2.3擷取集合中的元素
     smembers set01 #擷取set01中所有的key
     2.4判斷集合中是否存在某元素
     sismember set01 a #判斷set01中是否存在a元素,1表示存在,0表示元素不存在,或set01不存在
     2.5差集運算
     sdiff set01 set02 #返回除去二者共有元素後,set01中剩餘的元素;
     sdiff set02 set01 #返回除去二者共有元素後,set02中剩餘的元素;
     sdiffstore set03 set01 set02 #將返回的元素儲存在set03中;
     2.6交集運算
     sinter set01 set02 #返回二者共有的元素;
     sinterstore set03 set01 set02 #將返回元素儲存在set03中;
     2.7並集運算
     sunion set01 set02 #返回set01 set02中所有元素(重複元素只顯示一次);
     sunionstore set03 set01 set02 #將並集運算結果儲存在set03中
     2.8隨機返回集合中的某一元素
     srandmember set01
     2.9擷取集合中元素數量
     scard set01


三.儲存Sorted-set
1.概述
Sorted-set與set集合相似,都是字串的集合,都不允許重複;區別為Sorted-set中的每個成員都關聯一個分數(score),通過分數為元素排序;
雖然元素唯一,但分數可重複;
2.常用命令
2.1添加
zadd mysort 20 jack #向mysort的Sorted-set中添加jack元素(分數為20);
zadd mysort 40 rose 50 smith #可同時添加多個;
2.2擷取某成員分數
zscore mysort rose #返回字串分數;
2.3擷取成員數量
zcard mysort #返回成員個數,integer類型;
zcount mysort 40 70 #擷取分數在40-70之間的成員數量,返回integer
2.4刪除元素
zrem mysort smith #移除smith
zrem mysort smith  jack #移除smith
zremrangebyrank mysort 1 3 #移除排名(從小到大)為1-3的元素
zremrangebyscore mysort 0 60 #移除分數在0-60這間的元素
2.5範圍查詢
zrange mysort 0 -1 #返回從第一個到倒數第一個元素,即所有元素;
zrange mysort 0 -1 with scores #返回從第一個到倒數第一個元素,且包含分數;
zrevrange mysort 1 5 with scores #按照從大到小的順序返回(包含兩端元素);
2.6返回指定個數的成員,並按從小到大的分數排序
zrangebyscore mysort 90 100 withscores limit 3 5  #首先抽出90-100之間的元素按從小到大排序,再從索引為3的元素開始,取5個元素,並返回
2.7修改分數
zincrby mysort 5 jack #jack分數增加5
2.8返回成員排名
zrank mysort jack #返回成員在集合中的排名,integer,從小到大;
zrevrank mysort jack #返回成員在集合中的排名,integer,從大到小;

四.keys通用操作
1.keys pattern :擷取所有與pattern匹配的key
keys *  # *表示一個或多個字元,此語句表示返回所有key;
keys m? # ?用匹配一個字元,此語句返回m開頭的且長度為2個字元的key;
2.刪除指定的key
del mysort
del list01
3.判斷key是否存在
exists mysort #1代表存在,0代表不存在
4.重新命名
rename mysort sort01  #把mysort重新命名為sort01
5.設定到期時間,以秒為單位
expire mysort 100    #設定mysort的到期時間為100s
6.擷取剩餘時間,若未設定,則返回-1
ttl mysort
7.擷取key的類型(string/list/set/hash/zset),不存在返回none
type mysort

五.Jedis(以下代碼在Eclipse中實現)
1.匯入jar包(commons-pool2-2.3/jedis-2.7)
2.開啟redis(./bin/redis-server ./redis.conf),並測試連接成功
3.開啟連接埠6379
     #防火牆開啟3306連接埠
     /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
     #將開啟的連接埠的訪問規則儲存在檔案中
     /etc/rc.d/init.d/iptables save
4.實現如下代碼

  1 package jedisdemo;  2  import org.junit.Test;  3  import redis.clients.jedis.Jedis;  4  import redis.clients.jedis.JedisPool;  5  import redis.clients.jedis.JedisPoolConfig;  6   7 public class jedisdemo {  8      @Test  9      public void test01() { 10          // 構造jedis執行個體對象 11         Jedis jedis = new Jedis("192.168.128.130", 6379); 12          // 設定key-value 13          jedis.set("name", "rose"); 14          // 根據key取value 15          String name = jedis.get("name"); 16          System.out.println(name); 17          // 釋放資源 18         jedis.close(); 19      } 20  21     // 串連池方式 22     @Test 23      public void test02() { 24          // 擷取串連池,設定最大串連數,有效空閑串連 25         JedisPoolConfig conf = new JedisPoolConfig(); 26          conf.setMaxTotal(100); 27          conf.setMaxIdle(10); 28          // 根據串連池配置建立一個jedis的串連池 29         JedisPool pool = new JedisPool(conf, "192.168.128.130", 6379); 30          // 擷取串連池擷取執行個體對象 31         Jedis jedis = pool.getResource(); 32          jedis.set("age", "18"); 33          String age01 = jedis.get("age"); 34          System.out.println(age01); 35          // 關閉資源 36         jedis.close(); 37          pool.close(); 38  39     } 40  } 41 

Redis資料庫2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.