快取資料庫-redis資料類型和操作

來源:互聯網
上載者:User

標籤:redis資料類型   roo   war   返回   表示   odi   sed   操作   圖片   

 

Redis支援五種資料類型:string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)

一:String(字串)

string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。

string類型是二進位安全的。意思是redis的string可以包含任何資料。比如jpg圖片或者序列化的對象 。

string類型是Redis最基本的資料類型,一個鍵最大能儲存512MB。

redis中的String在在記憶體中按照一個name對應一個value來儲存。

   -------------------------------------------------------------------------------------

  1)set(name,value,ex=None,px=None,nx=False,xx=False)

    在Redis中設定值,預設不存在則建立,存在則修改

    ex:到期時間(秒)

    px:到期時間(毫秒)

    nx:如果設定為True,則只有name不存在時,當前set操作才執行

    xx:如果設定為True,則只有name存在時,崗前set操作才執行

   2)setnx(name,value)

    設定值,只有name不存在時,執行設定作業(添加)

    = set(name value,nx=True)

  3)setex(name,value,time)

    # time,到期時間(數字秒 或 timedelta對象

    =set(name,value,ex=time)

  4)psetex(name, time_ms, value)

    # time_ms,到期時間(數字毫秒 或 timedelta對象

     =set(name,value,px=time)

   5)mset(*args, **kwargs)

    大量設定值

    如:mset(k1="v1",k2="v2")

  -----------------------------------------------------------------------------------

  6)get(name) 擷取值

  7)mget(keys,*args) 批量擷取

    mget(k1,k2)

  8)getset(name,value) 設定新值並擷取原來的值

  9)getrange(key,start,end)   擷取子序列(根據位元組擷取,非字元)

    # name,Redis 的 name

    # start,起始位置(位元組)

    #end,結束位置(位元組)

    比如:“中國” 0-3表示“中”

  10)setranage(name,offset,value) 修改字串內容,從指定字串索引開始向後替換(新值太長時,則向後添加)

  11) setbit(name,offset,value) 對name對應值的二進位表示的位進行操作

    

# 對name對應值的二進位表示的位進行操作 # 參數:    # name,redis的name    # offset,位的索引(將值變換成二進位後再進行索引)    # value,值只能是 1 或 0 # 註:如果在Redis中有一個對應: n1 = "foo",        那麼字串foo的二進位表示為:01100110 01101111 01101111    所以,如果執行 setbit(‘n1‘, 7, 1),則就會將第7位設定為1,        那麼最終二進位則變成 01100111 01101111 01101111,即:"goo" # 擴充,轉換二進位表示:     # source = "武沛齊"    source = "foo"     for i in source:        num = ord(i)        print bin(num).replace(‘b‘,‘‘)     特別的,如果source是漢字 "武沛齊"怎麼辦?    答:對於utf-8,每一個漢字占 3 個位元組,那麼 "武沛齊" 則有 9個位元組       對於漢字,for迴圈時候會按照 位元組 迭代,那麼在迭代時,將每一個位元組轉換 十進位數,然後再將十進位數轉換成二進位        11100110 10101101 10100110 11100110 10110010 10011011 11101001 10111101 10010000        -------------------------- ----------------------------- -----------------------------                    武                         沛                           齊*用途舉例,用最省空間的方式,儲存線上使用者數及分別是哪些使用者線上 每個使用者都用個ID,使用者ID號是多少,就設定第多少位為1,通過bitcount()統計1的個數,就代表有了多少個線上使用者
優點統計速度快,點用空間少:1億使用者只需要佔用100M空間 1M=1024*1024

   12)getbit(name,offset) 擷取name對應的值的二進位表示中的某位的值 (0或1)

  13) bitcount(key, start=None, end=None) 擷取name對應的值的二進位表示中 1 的個數

  14)strlen(name) 返回name對應值的位元組長度(一個漢字3個位元組)

  15)incr(self, name, amount=1)自增 name對應的值,當name不存在時,則建立name=amount,否則,則自增。

  16)incrbyfloat(self, name, amount=1.0) 增 name對應的值,當name不存在時,則建立name=amount,否則,則自增。

  17)decr(self, name, amount=1)自減 name對應的值,當name不存在時,則建立name=amount,否則,則自減。

  18)append(key, value) 在redis name對應的值後面追加內容

   練習查看

 

# -*- coding:utf-8 -*-__author__ = ‘shisanjun‘[BEGIN] 2017/7/29 15:51:31[[email protected] ~]# redis-cli127.0.0.1:6379> set name1 shi  #設定個key-valueOK127.0.0.1:6379> set name2 sanOK127.0.0.1:6379> set name3 jun ex 3 #設定name3到期時間為3秒OK127.0.0.1:6379> get name3(nil)127.0.0.1:6379> KEYS *  #查看所有key1) "name1"2) "name2"3) "foo"127.0.0.1:6379> set name2  jun nx #不存在則建立,存在則不建立(nil)127.0.0.1:6379> set name3  jun nx #不存在則建立,存在則不建立OK127.0.0.1:6379> set name1  111 xx #存在則建立,不存在不建立OK127.0.0.1:6379> set name4  111 xx #存在則建立,不存在不建立(nil)127.0.0.1:6379> SETNX name5 222 #不存在則建立,存在則不建立(integer) 1127.0.0.1:6379> SETNX name5 222(integer) 0"10"127.0.0.1:6379> SETEX name6 3 333 #設定到期時間為3秒 setex key time valueOK127.0.0.1:6379> get name6(nil)127.0.0.1:6379> PSETEX name7 1 777 #設定到期時間為1毫秒 setex key time valueOK127.0.0.1:6379> MSET k1 "v1" k2 "v2" #大量設定OK127.0.0.1:6379> keys *1) "name1"2) "k1"3) "name5"4) "k2"5) "name2"6) "name3"7) "foo"127.0.0.1:6379> mget k1 k2 #批量查看1) "v1"2) "v2"127.0.0.1:6379> GETSET k1 "v3" #設定新值還回舊值"v1"127.0.0.1:6379> get k1"v3"127.0.0.1:6379> set k3 "中國"OK127.0.0.1:6379> GETRANGE k3 0 3 #從那個位元組擷取,一個中文3個位元組"\xe4\xb8\xad\xe5"127.0.0.1:6379> SETRANGE k3 6 1111 #從那個位元組設定(integer) 10127.0.0.1:6379> get k3"\xe4\xb8\xad\xe5\x9b\xbd1111"127.0.0.1:6379> set n1 "foo"OK127.0.0.1:6379> setbit n1 7 1  #從左至右第7位設定1(integer) 0127.0.0.1:6379> get n1"goo"127.0.0.1:6379> getbit n1 7 #擷取第7位是1還是0(integer) 1127.0.0.1:6379> BITCOUNT n1 0 3 #擷取從0-3個位元組中轉二進位1的個數(integer) 17127.0.0.1:6379> STRLEN k3 #統計位元組個數(integer) 10127.0.0.1:6379> set n2 1OK127.0.0.1:6379> INCR n2 #自增(integer) 2127.0.0.1:6379> INCR n2(integer) 3127.0.0.1:6379> INCR n2(integer) 4127.0.0.1:6379> DECR n2 #自減(integer) 3127.0.0.1:6379> DECR n2(integer) 2127.0.0.1:6379> INCRBYFLOAT n2 1.0  #按浮點數自增"3"127.0.0.1:6379> INCRBYFLOAT n2 1.0"4"127.0.0.1:6379> set n3 4.0127.0.0.1:6379> INCRBYFLOAT n3 2.1"6.1"127.0.0.1:6379> APPEND n3 2222  #追加(integer) 7127.0.0.1:6379> get n3"6.12222"[END] 2017/7/29 16:05:41
View Code

 

快取資料庫-redis資料類型和操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.