Redis之----Redis的數據類型和操做

1.字符串(string)
  說明:redis字符串是字節序列,而且512兆爲上限。mysql

  a.設置redis

  (1).set:設置字符串,設置成功則返回「OK」;
      例如:set name "xjb" ;sql

  (2).setnx:若是key存在,則設置失敗,返回0;key不存在,就會設置成功,返回1;
      例如:setnx name "xjb";app

  (3).setex:設置key的對應的string值,並指定有效期.若是沒有指定,則永久有效;
      例如:setex hairColor 10 "red";測試

  (4).setrange:將指定的字符串的子字符串從指定位置替換爲被指定的字符串。若是被指定的字符串長度不夠,則只替換被指定字符串的長度,剩餘的長度仍是繼續拼接下去;
      例如:setrange email 6 "qq.com"對象

  (5).mset:一次設置多個key的值,成功返回「OK」表示全部的值都設置成功了;失敗則返回0,表示全部的值都沒有被設置;
      例如:mset key1 xjb1 key2 xjb2 key3 xjb3blog

  (6).msetnx:一次設置多個key的值,成功返回ok表示全部的值都設置了,失敗返回0表示沒有任何值被設置,但不會覆蓋已經存在的key.
      例如:msetnx key1 xjb1 key2 xjb2 key3 xjb3 排序


  b.獲取
  (1).get:獲取設置了key的值,成功則返回設置了的值;失敗則返回nil;
      例如:get name
  
  (2).getset:設置新值,並獲取舊值;
      例如:getset name索引

  (3).getrange:獲取指定key指定範圍的子字符串;
      例如:getrange key2 0 5three

  (4).mget批量獲取;
      例如:mget key1 key2 key6 key7

  (5).incr:對指定的key自增1;
      例如:incr key6
  
  (6).incrby:對指定的key自增指定的值,若是key不存在,則設置key爲0再自增。增量設置爲正數則加,設置爲負數則減;
      例如:incrby key2 7


  (7).decr:對指定的key自減1;

  
  (8).descby:對指定的key自增指定的值,若是key不存在,則設置key爲0再自減。增量設置爲正數則加,設置爲負數則加;

 
  (9).append:給指定key的值追加被指定的字符串,並放回key的新值的長度(字符串拼接);
      例如:append key gmail.com  

  (10).strlen:返回指定key的值得長度;
      例如:strlen name;

  (11).expire:設置指定key的過時時間;
      例如:expire key 30;

 


2.哈希(hash)
  說明:redis的哈希是鍵值對的集合;redis的哈希是字符串字段和字符值之間的映射,他的添加和刪除都是0和1(平均操做),被用來表示對象。

  a.設置
  (1).hset:設置一個哈希表,若是key不存在,則先建立;
      例如:hset user:001 name lijie
    
  (2).hsetnx:設置hash field爲指定值,若是key存在,則返回0;若是key不存在,則先建立;
      例如:hsetnx myhash name lijie

  (3).hmset:批量設置多個值;
      例如:hmset user:001 username xjb pwd xjb desc xjb
           hmset user:002 username xjb2 pwd xjb2 desc xjb2
  
  (4).hincrby:獲取指定key的值並自增指定的步長,而後返回增長後的值;
      例如:hincrby user:003 age 8
  
  (5).hexists:測試指定字段是否存在,存在則返回1,不存在就返回0;
      例如:hexists user:003 age

  (6).hdel:刪除指定key的值,成功則返回1;失敗返回0;
      例如:hdel user:003 xjb (沒有hdel user:003的用法)

  b.獲取:
  (1).hget:獲取一個哈希表指定字段的值,若是成功,則返回對應值;若是失敗,則返回nil;
      例如:hget user:001 name

  (2).hmget:批量獲取指定key的值;
      例如:hmget user:001 name age

  (3).hlen:獲取指定字段的數量;
      例如:hlen user:003  

  (4).hkeys:返回指定的字段名:
      例如:hkeys user:001

  (5).hvals:返回指定哈希表中的指定的值;
      例如:hvals user:001

  (6).hgetall:返回指定哈希表中全部的key和value:
      例如:hgetall user:001

 

3.鏈表(list):
說明:主要功能是push、pop、獲取一個範圍的全部值;redis的list類型是一個每一個子元素都是string類型的雙向鏈表;咱們能夠經過push、pop從鏈表的頭部或者尾部添加刪除元素,這樣list既能夠做爲棧(先進後出:試管),又能夠做爲隊列(先進先出:管道)。
   
  a.設置
  (1).lpush:向隊列頭部壓入一個元素;
      例如:lpush list1 "hello"
 
  (2).lpushx:向隊列頭部壓入一個元素,當且僅當隊列存在;若是隊列不存在,lpushx什麼不作;
      例如:lpushx list1 "hello"

  (3).rpush;向隊列尾部壓如一個元素;
      例如:rpush list2 "word"

  (4).rpushx:向隊列尾部部壓入一個元素,當且僅當隊列存在;若是隊列不存在,lpushx什麼不作;
      例如:lpushx list2 "hello"
  
  (5).linsert:在指定的前面或者後面壓入一個元素,並返回列表中列表的個數;
      例如:linsert list3 before world wrong
           linsert list3 after  world test

  (6).lset:將列表中指定下標元素的元素替換掉;
      例如:lset list3 3 "test"

  (7).lrem:將列表中指定元素的n個指定的元素值,並返回刪除的指定元素的個數;
      例如:lrem list3 2 "test" 

  (8).ltrim:保留指定範圍的元素(刪除其餘元素);
      例如:ltrim list3 1 -1
      說明:後面的兩個數是指定保留範圍;

  (9).lpop:從鏈表的頭部彈出(刪除)元素,並返回彈出刪除的元素;
      例如:lpop list3

  (10).lpop:從鏈表的尾部彈出(刪除)元素,並返回彈出刪除的元素;
      例如:rpop list3

  (11).rpoplpush:彈出第一個列表中的最後一個元素,添加到第二個列表中第一個元素;
      例如:rpoplpush list3 list4

  (12).linindex:返回指定鏈表中指定索引位置的元素;
      例如:linindex list3 3
 
  (13).llen:返回指定鏈表中元素的個數;
      例如:llen list3

  b.獲取
  (1).lrange:獲取指定範圍的元素;
     例如:lpush list1 0 -1

 

4.無序集合(set)
  說明:它是string類型的無序集合,它的添加、刪除和查找複雜度都是0和1,操做它能夠去交集、並集、差集;這些操做能夠實現sns中的好友推薦和blog中的tag功能。

   a.設置
   (1).sadd:向集合中添加一個或者多個元素,添加成功則返回1,失敗則返回0;
       例如:sadd myset1 one two three
       說明:不能夠重複添加一樣的元素;

   (2).srem:刪除集合中的一個元素,刪除成功則返回1,失敗則返回0;
       例如:srem myset2 one
  
   (3).spop:從集合中隨機彈出(刪除)一個元素;
       例如:spop myset2

   (4).sdiff:獲取兩個集合的差集;
       例如:sdiff myset1 myset2
       說明:以在前面的集合爲標準。

   (5).sdiffstore:將兩個集合的差集存貯到一個新的集合中;
       例如:sdiffstore myset3 myset1 myset2
       說明:將集合myset1和myset2的差集存儲到myset3中


   (6).sinter:返回全部給定集合的交集;
       例如:sinter myset1 myset2
 
   (7).sinterstore:將兩個集合的交集存貯到一個新的集合中;
       例如:sinterstore myset4 myset1 myset2
       說明:將集合myset1和myset2的差集存儲到myset4中


   (8).sunion:返回全部給定集合的並集;
       例如:sunion myset1 myset2


   (9).sunionstore:將指定集合的並集存貯到新的集合中,並放回並集元素的個數;
       例如:sunion myset5 myset1 myset2

   
   (10).smove:將一個集合中指定元素移除到另外一個指定集合中;
       例如:sunion myset1 myset6 three
       說明:將myset1的中的three元素移除,並添加到myset6中

   (11).scard:返回指定集合的元素的個數;
       例如:scard myset2
    
   (12).sismember:判斷某個元素是不是指定集合的元素,是就返回1,否就返回0;
       例如:sismember myset1 three 

   (13).srandmember:隨機返回指定集合的一個元素,可是不刪除元素;
       例如:srandmember myset3


   b.獲取
   (1).smumbers:獲取某個集合中全部的元素;
       例如:smembers myset1 one

 

5.有序集合(zset)
  說明:它在無序集合的基礎上增長了一個順序屬性,這個屬性在添加修改元素的時候能夠指定,每次制定後,zset會自動從新按新的值調準順序;能夠理解爲有兩列的mysql表,一列存value,一列存順序。
 
  a.設置
  (1).zadd:向指定的集合中添加順序和值;
     例如:zadd myzset1 1 one

  (2).zrem:刪除指定集合中指定的元素
     例如:zrem myzset two

  (3).zincrdy:若是在名稱爲key的zset中已經存在元素member,則該元素的score(序列號)增長increment;不然向該集合中增長該元素,其score(序列號)的值爲increment.最終都返回該指定元素的序列號。
     例如:zincrby myzset1 -2 one
     說明:將myzet中的one元素的序列號減小2;     

  (4).zrank:先把集合按score升序排序,並返回排序後指定集合中的元素的score(序列號)(執行完後排序不保留)
     例如:zrank myzset1 one(從0開始)

  (5).zrank:先把集合按score降序排序,並返回排序後指定集合中的元素的score(序列號)(執行完後排序不保留)
     例如:zrank myzset1 one(從0開始)
   

  b.獲取
  (1).zrange:獲取指集合的元素值(升序);
    例如:zrange myzset1 0 -1 withscores;//獲取myzset1集合的全部元素,並顯示集合
         zrange myzset1 0 -1;//獲取myzset集合的全部元素,不顯示集合

  (2).zrevrange:獲取指集合的元素值(降序);
    例如:zrevrange myzset1 0 -1

  (3).zrangebyscore:獲取指定score的值;
    例如:zrangebyscore myzset 2 3 withscore

  (4).zcount:獲取指定區間元素的個數;
      例如:zcount myzsset 2 6 

  (5).zcard:返回集合中素有元素的個數;
      例如:zcard myzset

  (6).zremrangebyrank:刪除集合指定範圍的元素,並返回刪除了元素的個數(按索引刪除);
      例如:zremrangebyrank myzset1 2 4
      說明:將myzset按序列號按升序排序,而後刪除索引在2-4之間的元素。

  (7).zremrangebyscore:刪除集合指定範圍的元素,並返回刪除了元素的個數(按序列號刪除)       例如:zremrangebyscores myzset1 2 5  

相關文章
相關標籤/搜索