日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis 基本操作

發布時間:2023/12/20 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 float

Note:

  • 盡管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 result

Redis 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 zlexcount

Note: 重復調用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 基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。