- String
- List
- Hash
- Set
- ZSet
首先看一下第一個:String
String是redis中最簡單的數據類型。在key-value中,一般所說的數據類型就是value的類型,而key的數據類型只有一種,是字符串類型,但是我們都知道,在java中,我也可以存一個對象,但是對象要往出寫的過程需要序列化,所以存到redis中的依舊是字符串。
redis中value的字符串,是一個動態字符串,內部是可以修改的,類似於java中的StringBuffer,它采用分配冗余空間的方式減少內存的頻繁分配。在redis內部結構中,一般實際分配內存空間會大於需要的內存,當字符串小於1M的時候,擴容就是在現有的空間基礎上加倍,擴容每次擴1M空間,最大是512M.
操作字符串的常用命令:
- append:使用這個命令的時候,如果key已經存在,則在value后追加內容,如果key不存在,則創建新的鍵值對。(append key value)
- get :根據key的值查看value的值(get key)
- set:賦值操作(set key value)
- decr:當value的值是 數字的時候,實現對value的值減一,否則報錯,如果value不存在,則會給value一個默認值0並在此基礎上減一。(decr key)
- decrby:和decr類似,都是執行減操作,不過decrby可以設置步長,也就是減的個數(decrby key 5)
- getranger:可以用來返回value的子串,類似於java中的substring方法(getranger key 3 -3 (截取從第三個開始一直到倒數第三個))
- getset:獲取並更新某一個key的value(getset key value)
- incr:給某個key自增
- incrby:自增並設置步長
- incrbyfloat:自增並設置步長,步長可以設置為浮點數
- mget:批量獲取
- mset:批量存儲
- ttl:查看key 的過期時間
- expire:設置key的有效期,如果key在過期之前被重新set,則過期時間會失效
- persist:移除一個key的過期時間
- setex:給key設置value,同時設置過期時間(時間單位是秒)
- pxetex:給key設置value,同時設置過期時間(時間單位是毫秒)
- setnx:默認,set命令命令會覆蓋存在的key,setnx則不會。
- msetnx:批量設置
- setrange:覆蓋一個已經存在key的value
- strlen:查看字符串長度
- flushall:清空所有
字符串中BIT命令:在redis中,字符串都是以二進制方式存儲的,BIT相關的命令,就是對二進制進行操作
- getbit :獲取key對應的value在offset處的bit值
- setbit :修改key對應的value在offset處的bit值
- bitcount:統計二進制中1的個數
第二個看一下:List
redis中的value是一個列表的形式,因為list的底層是數組所以他的元素是可以重復的。
- lputh:將value以從左到右的順序依次插入到表頭
- lrange:返回列表指定區間的元素
- rputh:將value以從右到左的順序依次插入到表頭
- rpop:移除並返回列表的末尾元素
- lpop:移除並返回列表的頭部元素
- lindex:返回列表中,下標為index的元素
- ltrim:對列表修剪
- bipop:阻塞式的彈出,相當於lpop的阻塞,要設置阻塞時長
第三個看一下:Set
redis中,set的元素不能重復,可以放重復的,但是結果只有一個
- sadd:添加元素到一個key中
- smembers:獲取一個key中的所有元素
- srem:移除指定的元素
- sismeneber:返回某個成員是否在集合中
- scard:返回集合的數量
- srandmember:隨即返回一個元素
- spop:隨即返回並且出棧一個元素
- smove:把一個元素從一個集合移到另一個集合中
- sdiff:返回兩個集合的差集(從小的集合中出發,順序很關鍵)
- sinter:返回兩個集合的交集
- sinterstore:返回兩個集合的交集並存到一個新的集合
- sdiffstore:返回兩個集合的差集並存到一個新的集合
- sunion:求並集
- sunionstore:求並集並存到新的集合
第四個看一下:Hash
redis中,hash也稱樹,key是字符串,value是一個 鍵值對
- hset:添加值
- hget:獲取值
- hmset:批量添加
- hmget:批量獲取
- hdel:刪除的是value中的key中的value
- hsetnx:默認如果key和field相同,會覆蓋掉value,hsetnx則不會
- hvals:獲取所有value
- hkeys:獲取所有key
- hgetall:同時獲取key和value
- hexists:返回field是否存在
- hincrby:value自增
- hincrbyfloat:value自增一個浮點數
- hlen:返回某個key中value的數量
- hstrlen:返回某個key中某個field的字符串長度
第五個看一下:ZSet
有序集合,可以用於檢索
- zadd:添加
- zscore:返回member中的score值
- zrange:返回集合中的一組元素(可以加上withscores(連同分數一起返回))
- zrevrange:返回集合中的一組元素(倒敘)
- zcard:返回元素個數
- zcount:返回score在某個區間(閉區間)的元素的個數
- zrangebyscore:按照score的范圍返回元素
- zrank:返回元素的排名(從小到大)
- zrevrank:返回元素的排名(從大到小)
- zincrby:score自增
- zinterstore:給兩個集合的交集放到到一個新的集合
- zrem:彈出一個元素(刪除)
- zlexcount:計算數量(根據元素統計,還有元素區間統計)
- zrangebylex:返回指定區間內的成員
####除卻String
在第一次使用時,如果容器不存在,就自動創建一個
如果里面沒有元素了,那么立即刪除容器,釋放內存