Redis 基本操作
生活随笔
收集整理的這篇文章主要介紹了
Redis 基本操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Redis 基本操作
參考:An introduction to Redis data types and abstractions
中文翻譯:看云
Redis命令查詢:Command Reference - Redis
Strings
# set and get set key value # set value get key# multiple operation mset key1 value1 [key2 value2...] # multiple set mget key1 [key2...] # multiple get# string operation getrange key start end # get sub string setrange key offset value # rewrite from specific offset strlen key # get string length append key value # append value to existing value(returns added value length)# bit operation setbit key offset value # set bit value by offset getbit key offset # get bit value by offset# expires setex key expire # create a key with expire set key ex expire # creat a key with expire psetex key expire # expires after milie-seconds# if exists setex key value # set if exists setnx key value # set if not exits(returns 1 on success, 0 on failed) set key value nx # set if not exits(return OK on success, (nil) on failed)# change self incr key # increment on value incrby key increment # increment on value by increment incrbyfloat key increment # increment on value by float increment decr key # same decrby key decrement # same getset # get set(can be used to count without omit)Lists
#other llen key # list length# push lpush key ele1 [ele2 ...] # push to the left(one by one) rpush key ele1 [ele2 ...] # push to the right(one by one) lpushx key value # push if exists rpushx key value # push if exists# pop(get and remove) rpop mylist # pop one from the right, return null if empty lpop mylist # same# get lindex index # get value by index lrange key start end # get element[a, b], [-2,-1] # remove lrem key value count # default 0 remove all, <0 remove from tail# Block pop (如果有多個client在wait, 先wait的client先被服務.) brpop key1 [key2 ...] timeout # block until new element(0 wait forever) blpop key1 [key2 ....] timeout # block until new element(0 wait forever)# pop and push rpoplpush source desti # rpop from source, lpsuh to desti brpoplpush source desti # same but blocking# slice ltrim key start end # only keep elements in [start, end]List的常用案例:
- 記憶用戶最近的更新。
- 進程間通信。使用生產者消費者模型。
rpoplpush/brpoplpush用法:
- Reliable queue (消費者取得數據后可能因為某種原因未完成)
- Circular list(sour和desti相同, 逐個遍歷列表而非使用lrange一次取出所有元素, 在有多個client同時遍歷,或者在遍歷過程中加入新的元素時,都能依次遍歷,此外,由于原子性操作,不會在丟失過程中丟失數據)
Hashes
# set hset key filed value # hash set hmset key filed1 value1 [field2 value2 ...] # hash multiple set hsetnx key field value # set field if the filed not exists# delete hdel key filed1 [field2 ...] # delete multiple fields from hash# other hlen key # get the # of fields hscan key cursor [pattern] [count] # similar to scan, but in hashes hstrlen key filed # get length of value of field hexists key filed # check existance# get hget key filed # get one filed hmget key filed1 [filed2 ...] # get multiple field hgetall key # get all fields with values hkeys key # get all fields hvals key # get all values# change value hincrby key filed increment # hash increment hincrebyfloat key field increment # hash increment by floatNote:
- 盡管hash非常適合用于表示對象,但我們也可以將hash用在別的地方(因為hash里面的內容是沒有限制的)
- 小哈希(例如,一些擁有小值的元素)在內存中以特殊的方式編碼存儲,以讓內存存儲變得更有效
Redis Sets
# get size (or cardinality 基數、集合的勢) scard key# add sadd key value1 [value2 ...] # add multple values to set# get smembers key # get all elements of set srandmember key # randomly get one member# check existance sismenber key value # check existence# pop spop key # **randomly** pop one element# UNION sunionstore res key1 [key2 ...] # get union of sets and store resultRedis Sorted sets
# add zadd key score1 mem1 [score2 mem2] # add multiple elements# get by rank zrange key start end [withscores] # get a range of elements zrerange key start end [withscores] # reverse order# operate on ranges zrangebysore key min max # get all between min and max zremrangebyscore key min max # remove all between min and max# get rank zrank key value # get rank zrerank key value # reverse order# lexicographical scores(字典序操作) (可以用于自動完成) zrangebylex zrevrangebylex zremrangebylex zlexcountNote: 重復調用zadd可以更新元素的score(可用于游戲排行榜)
Bitmaps
# operations setbit key offset val # set bit getbit key offset # get bit bitop [and/or/xor/not] dest key1 [key2...] # bit operate and store to dest bitcount bitpos key [start end] # find the first bit of 0 or 1可用于記錄網站用戶每日訪問情況。
HyperLogLogs
一種類似set的數據結構,用于估計set的大小(更快地)。
對Key自身的操作(無關乎數據和數據類類型)
type key # get key type del key # delete key exists key # check existance expire key # set an expire for a key pexpire key # set an expire in millis for a key persist key # remove expire for a key ttl key # time to live pttl key # time to live in milliseconds遍歷keys
keys # 一次返回所有的key(當keys特別多時應采用scan) scan # 逐個遍歷key (可以模糊匹配)轉載于:https://www.cnblogs.com/fondoger/p/redis-basic-usage.html
總結
以上是生活随笔為你收集整理的Redis 基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【洛谷4001】 [ICPC-Beiji
- 下一篇: 为SQLMap配置WebUI界面