Redis的數據類型之String


Redis主要支持的數據類型有5種:String ,Hash ,List ,Set ,和 Sorted Set。


Redis數據類型String
string類型在redis中是最常見的類型,value存儲最大數據量為512M,可以存放json數據,圖像數據等等。

下面跟着敲Redis命令操作String類型數據的代碼吧。

redis數據寫命令Set,相當於數據插入

redis 127.0.0.1:6379> set name zlh   --返回值: ok,說明插入成功。如果當前name存在值則覆蓋替換原有的value值。

redis數據讀命令Get,獲取數據

redis 127.0.0.1:6379> get name   --返回值: "zlh" ,如果當前key沒有value值,則返回null

redis數據追加命令Append,追加數據

redis 127.0.0.1:6379> append name ' is my friend'   --返回值:"zlh is my friend"  ,如果當前key的value有值則附加到原有string后面,如果沒有則寫入。

redis數據刪除

redis 127.0.0.1:6379>del name

redis數據讀寫操作命令GetSet,獲取原有value值的同時寫入新的value值 1、redis 127.0.0.1:6379>getset name zlh   --返回值:"zlh is my friend",這里返回的是原有name的value值,同時又給name的value設置新值zlh。
此時name的值真實值為zlh
2、redis 127.0.0.1:6379>get name --返回值:zlh ,因為上面getset給name的value設置值為zlh。 redis數據加法計算命令incr,incrby,數據加法運算,incr為+1內置運算,incrby為+n自設n運算 1、redis 127.0.0.1:6379>incr name ---返回值:“數據不是整型或數據超出64位有符號整形數據范圍” ,由於原有name的value為"zlh",所以不能轉換為整型,故報異常。 2、redis 127.0.0.1:6379>incr age ----返回值:1,由於不存在age的key與value值,但是默認age為key值為0進行+1運算。 3、redis 127.0.0.1:6379>incr age ---返回值:2,由於上一行代碼給age賦值為1,這里incr命令進行+1運算,故返回值為2。 4、redis 127.0.0.1:6379>incrby age 10 ---返回值:12 ,因為原有age是2,這里+10故為12。 redis數據減法計算命令decr,decrby, 數據減法運算,decr為-1內置運算,decrby為減n自設n運算 1、redis 127.0.0.1:6379>decr name --返回值:“數據不是整型或數據超出64位有符號整形數據范圍” ,由於原有name的value為"zlh",所以不能轉換為整型,故報異常。 2、redis 127.0.0.1:6379>decr age --返回自:11,因為原有age的value值為12,這里decr是自減1的意思,故為11。 3、redis 127.0.0.1:6379>decrby age 10 --返回值:1,因為原有age為11,這里-10,故為1。 redis獲取string長度的命令strlen redis 127.0.0.1:6379>strlen name --返回值:3,因為name的value值為zlh,故長度為3,如果該key或者value不存在,則返回0。 redis設置value值並設置過期時間命令setex(單位秒) redis 127.0.0.1:6379>setex sex 20 male ---返回值:ok,設置key為sex的value值為male,緩存的過期時間為20s。 redis 127.0.0.1:6379>ddl sex ---返回值: 剩余過期時間,0為已過期,-1為永不過期。 redis 127.0.0.1:6379>get sex ---返回值:male,說明此時為沒有過期,當已經過期此處返回數據為null。 redis賦值判斷原值是否存在,存在不賦值,返回0;不存在才賦值,返回1;命令setnx redis 127.0.0.1:6379>setnx name Tom ---返回值:0,因為name的原有value為zlh,存在值則不賦值。 redis 127.0.0.1:6379>gete name ---返回值:zlh,因為有值,故上面賦值為tom失敗,返回0。 redis 127.0.0.1:6379>setnx phone 18501733702 ---返回值:1,賦值成功,因為原來不存在phone的key與value。 redis 127.0.0.1:6379>get phone ---返回值:18501733702,說明上面的setnx賦值成功。 redis字符串替換賦值,從指定位置開始替換,命令setrange redis 127.0.0.1:6379>setrange phone 9 123 --返回值:12,12為字符串長度,11位號碼變成了12位。因為從第9位開始替換,替換到原有字符串的最后一位還沒有替換完畢,所以在最后面添加啦一位設置為3。 redis 127.0.0.1:6379>get phone ---返回值為:185017337123. redis 127.0.0.1:6379>set phone 1 ---這里為了下面說下setrange的其他特性,把電話設置為1. redis 127.0.0.1:6379>setrange phone 3 aaa ---返回值為:6,因為原有phone的value值為1,不到三位,用0*00替換2位,所以要添加2為才能替換第三位后面的值為aaa。 redis 127.0.0.1:6379>get phone ---返回值:1\*00\*00aaa。理解下上面的操作就知道這里為什么是這樣的返回值了。 redis截取字符串,從下標為n開始截取到n或n+1,類似c#中的substring,命令getrange redis 127.0.0.1:6379>set phone 18501733701 ----方便下面操作 redis 127.0.0.1:6379>getrange phone 1 5 ---返回值:85017,因為getrange是從下標為1開始截取截取到下標為5,這里包含下標為5的值。 redis 127.0.0.1:6379>getrange phone 0 0 ---返回值:1,從下標為0開始截取,截取到下標為0,包含下標為0。故返回值為1。 redis 127.0.0.1:6379>getrange phone 10 13 --返回值為:1,此號碼下標直到10的11位號碼,從10開始截取,截到第13位,后2位不存在忽略,只返回第10位。
故返回干凈的1。 redis批量操作修改及讀取string數據,命令mget,批量讀取,命令mset,批量賦值,命令msetnx,帶事務性的賦值,發現有一個key已經存在,所有事務回歸,不做賦值處理操作 redis
127.0.0.1:6379>mset name zlh age 30 ---返回值:ok,這里設置了 key為name和age的value分別為zlh,30 redis 127.0.0.1:6379>mget name zlh ---返回值:1>zlh 2>30 。 redis 127.0.0.1:6379>msetnx name Jim address China ---返回值為:0,沒有做任何修改,因為key為那么已存在。 redis 127.0.0.1:6379>mget name address ---返回值:1>zlh 2>null redis 127.0.0.1:6379>msetnx address China,hobbies sports --返回值為:1,插入成功 redis 127.0.0.1:6379>mget address hobbies ---返回值:1>China 2>sports

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM