欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:緩存 Redis基本命令詳解

柚子快報邀請碼778899分享:緩存 Redis基本命令詳解

http://yzkb.51969.com/

1. 基本命令

命令不區(qū)分大小寫,而key是區(qū)分大小寫的

# select 數(shù)據(jù)庫間的切換 數(shù)據(jù)庫共計16個

127.0.0.1:6379> select 1

# dbsize 返回當前數(shù)據(jù)庫的 key 的數(shù)量

127.0.0.1:6379[1]> dbsize

# keys * 查看數(shù)據(jù)庫所有的key

127.0.0.1:6379[1]> keys *

# flushdb 清除當前數(shù)據(jù)庫

127.0.0.1:6379[1]> flushdb

# flushall 清除全部數(shù)據(jù)庫的內(nèi)容

127.0.0.1:6379[1]> flushall

# exists key 判斷某個 key 是否存在

127.0.0.1:6379[1]> exists name

# type key 查看你的 key 是什么類型

127.0.0.1:6379[1]> type name

# del key 刪除指定的 key 數(shù)據(jù) 阻塞刪除 數(shù)據(jù)比較大的時候會產(chǎn)生等待 不要刪除大的key,等待時間長,阻止了其他資源的操作

127.0.0.1:6379[1]> del name

# unlink key 根據(jù) value 選擇非阻塞刪除 異步刪除一個或多個鍵

# UNLINK 命令的主要特點是它是非阻塞的,unlink命令僅僅是刪除鍵值對,并不會立即將數(shù)據(jù)從磁盤上刪除 它會在后臺異步地刪除鍵值對,而不會阻塞服務器的正常操作

# UNLINK 命令非常適合于刪除大量鍵值對或者刪除耗時較長的鍵值對

# UNLINK 命令不接受模式匹配參數(shù),只能指定具體的鍵名

127.0.0.1:6379[1]> unlink name

# expire key 過期時間 為給定的 key 設置過期時間

127.0.0.1:6379[1]> expire name 10

# ttl key 查看還有多少秒過期,-1 表示永不過期,-2 表示已過期

127.0.0.1:6379[1]> ttl name

# move name 數(shù)據(jù)庫編號 移除當前的key到其他數(shù)據(jù)庫

127.0.0.1:6379[1]> move name 1

# clear 清屏

127.0.0.1:6379[1]> clear

# auth 密碼 客戶端登陸進行密碼認證

127.0.0.1:6379[1]> auth 123456

# quit 服務器關(guān)閉連接

127.0.0.1:6379[1]> quit

# shutdown 正常關(guān)閉,數(shù)據(jù)保存 redis服務關(guān)閉

127.0.0.1:6379[1]> shutdown

# config set key value 修改配置文件 例如設置密碼

127.0.0.1:6379[1]> config set requirepass 123456

# config get key 獲取配置文件key的值

127.0.0.1:6379[1]> config get requirepass

#help @類型

help @string

help @list

help @hash

help @hyperloglog

?

2.String字符串類型

String 是 Redis 最基本的類型,一個 key對應一個 value

String 類型是二進制安全的。意味著 Redis 的 string 可以包含任何數(shù)據(jù)。比如 jpg 圖片或者序列化的對象

String 類型是 Redis 最基本的數(shù)據(jù)類型,一個 Redis 中字符串 value 最多可以是 512M

數(shù)據(jù)結(jié)構(gòu)

String 的數(shù)據(jù)結(jié)構(gòu)為簡單動態(tài)字符串(Simple Dynamic String,縮寫 SDS)。是可以修改的字符串,內(nèi)部結(jié)構(gòu)實現(xiàn)上類似于 Java 的 ArrayList,采用預分配冗余空間的方式來減少內(nèi)存的頻繁分配

如圖中所示,內(nèi)部為當前字符串實際分配的空間 capacity 一般要高于實際字符串長度len。當字符串長度小于 1M 時,擴容都是加倍現(xiàn)有的空間,如果超過 1M,擴容時一次只會多擴 1M 的空間。需要注意的是字符串最大長度為 512M。

# set 添加鍵值對

# EX second 設置鍵的過期時間為 second 秒 SET key value EX second 效果等同于 SETEX key second value

# PX millisecond :設置鍵的過期時間為 millisecond 毫秒。 SET key value PX millisecond 效果等同于 PSETEX key millisecond value

# NX :只在鍵不存在時,才對鍵進行設置操作。 SET key value NX 效果等同于 SETNX key value

# XX :只在鍵已經(jīng)存在時,才對鍵進行設置操作

# get: 返回舊的值 同時設置新的值

# exat: 以秒為單位的unix時間戳作為過期時間

# pxat: 以豪秒為單位的unix時間戳作為過期時間

# keepttl :保留設置前指定健的生存時間 修改值的同時保留生存時間,不覆蓋

127.0.0.1:6379> set name ljy ex 10

127.0.0.1:6379> set name ljy px 100

127.0.0.1:6379> set name ljy nx

127.0.0.1:6379> set name ljy xx

# get 查詢對應鍵值

127.0.0.1:6379> get name

# append 將給定的 追加到原值的末尾

127.0.0.1:6379> append name 18

# strlen 獲得值的長度

127.0.0.1:6379> strlen name

# setnx 只有在 key 不存在時 設置 key 的值

127.0.0.1:6379> setnx name lhx

# incr 只能對數(shù)字值操作 將 key 中儲存的數(shù)字值增 1 如果為空,新增值為 1

127.0.0.1:6379> incr age 1

# decr 只能對數(shù)字值操作 將 key 中儲存的數(shù)字值減 1 如果為空,新增值為-1

127.0.0.1:6379> dccr age 1

# incrby <步長> 將 key 中儲存的數(shù)字值增。自定義步長

127.0.0.1:6379> incrby age 10

# decrby <步長> 將 key 中儲存的數(shù)字值減。自定義步長

127.0.0.1:6379> decrby age 10

# mset ... 同時設置一個或多個 key-value 對

127.0.0.1:6379> mset uname ljy age 20

# mget ..... 同時獲取一個或多個 value

127.0.0.1:6379> mget uname age

# msetnx ... 同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在

# 原子性,有一個失敗則都失敗

127.0.0.1:6379> msetnx title boy age 20 num 100

# getrange <起始位置> <結(jié)束位置> 獲得值的范圍

127.0.0.1:6379> getrange name 0 2

# setrange <起始位置> 覆寫所儲存的字符串值,從<起始位置>開始(索引從 0 開始)

# 替換指定位置開始的字符串!參數(shù)有幾個替換幾個

127.0.0.1:6379> setrange name 2 boy

# setex <過期時間> 設置鍵值的同時,設置過期時間,單位秒

# psetex key milliseconds value 設置key 并設置過期時間 單位豪秒

127.0.0.1:6379> setex key1 10 ljy

127.0.0.1:6379> psetex key1 1000 ljy

# getset 先get到值然后再set他的值 以新?lián)Q舊,設置了新值同時獲得舊值 設置新值并返回之前的舊值

127.0.0.1:6379> getset key1 name

3. List列表

主要特點:單鍵多值

一個雙端鏈表的結(jié)構(gòu),容量是2的32次方減1個元素大概40多億,主要功能有push/pop等,一般用在棧、隊列、消息隊列等場景。left、right都可以插入添加;

如果鍵不存在,創(chuàng)建新的鏈表;

如果鍵已存在,新增內(nèi)容;

如果值全移除,對應的鍵也就消失了

Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)

列表底層實際是個雙向鏈表,對兩端的操作性能很高,通過索引下標的操作中間的節(jié)點性能會較差

# lpush .... 從左邊插入一個或多個值

127.0.0.1:6379> lpush name lili leilei hanhan

# rpush .... 從右邊插入一個或多個值

127.0.0.1:6379> rpush name ljy lhx

# lpop 從左邊吐出一個值 值在鍵在,值光鍵亡

127.0.0.1:6379> lpop name

# rpop 從右邊吐出一個值 值在鍵在,值光鍵亡

127.0.0.1:6379> rpop name

# lrange 按照索引下標獲得元素(從左到右) 0 左邊第一個,-1 右邊第一個,(0-1 表示獲取所有)

127.0.0.1:6379> lrange name 0 -1

# rpoplpush 列表右邊吐出一個值,插到列表左邊

127.0.0.1:6379> rpoplpush name name2

# lindex 按照索引下標獲得元素(從左到右)

127.0.0.1:6379> lindex name 2

# llen 獲得列表長度

127.0.0.1:6379> llen name

# lrem 從左邊刪除 n 個 等于value(從左到右)

127.0.0.1:6379> lrem name 1 lili

# ltrim 對一個列表進行修剪(trim),就是說,讓列表只保留指定區(qū)間內(nèi)的元素,不在指定區(qū)間之內(nèi)的元素都將被刪除

# 下標 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。 你也可以使用負數(shù)下標,以 -1 表示列表的最后一個元素, -2 表示列表的倒數(shù)第二個元素,以此類推

127.0.0.1:6379> ltrim name 1 -1

# linsert before 的前面插入插入值

# linsert after 的后面插入插入值

127.0.0.1:6379> linsert name before lili other

127.0.0.1:6379> linsert name after lili new

# lset 將列表 key 下標為 index 的值替換成 value

127.0.0.1:6379> lset name 1 ppp

4.Set集合

Redis set 對外提供的功能與 list 類似 是一個列表的功能,特殊之處在于 set 是可以自動排重的,當你需要存儲一個列表數(shù)據(jù),又不希望出現(xiàn)重復數(shù)據(jù)時,set 是一個很好的選擇,并且 set 提供了判斷某個成員是否在一個 set 集合內(nèi)的重要接口,這個也是 list 所不能提供的。

單值多value且無重復

# sadd 將一個或多個 member 元素加入到集合 key 中,已經(jīng)存在的 member 元素將被忽略

127.0.0.1:6379> sadd name ljy lhx lzf

# smembers 取出該集合的所有值

127.0.0.1:6379> smembers name

# sismember 判斷集合是否為含有該值,有 1,沒有 0

127.0.0.1:6379> sismember name ljy

# scard 返回該集合的元素個數(shù)

127.0.0.1:6379> scard name

# srem .... 刪除集合中的某個元素

127.0.0.1:6379> srem name ljy

# spop [數(shù)字] 隨機從該集合中吐出N個值 該值從集合中刪除

127.0.0.1:6379> spop name 2

# srandmember 隨機從該集合中取出 n 個值。不會從集合中刪除

127.0.0.1:6379> srandmember name 1

# smove value 把集合中一個值從一個集合移動到另一個集合

127.0.0.1:6379> smove name name2 ljy

# sinter 返回兩個集合的交集元素 兩個集合中都共有的元素

127.0.0.1:6379> sinter name name2 ljy

# sunion 返回兩個集合的并集元素

127.0.0.1:6379> sunion name name2

# sdiff 返回兩個集合的差集元素(key1中有,key2中沒有) 以第一個key為主 屬于key1但是不屬于key2的元素構(gòu)成的集合

127.0.0.1:6379> sdiff name name2

# sintercard numkeys key ...[limit] 返回結(jié)果的基數(shù) 由所有給定集合的交集產(chǎn)生的集合的基數(shù)

127.0.0.1:6379> sintercard 2 k1 k2

5. Hash

Redis hash 是一個鍵值對集合,值也是field 和 value

Redis hash 是一個 string 類型的 field 和 value 的映射表,hash 特別適合用于存儲對象

# hset 集合中的 鍵賦值

127.0.0.1:6379> hset info name ljy

# hget 集合取出 value

127.0.0.1:6379> hget info name

# hmset ... 批量設置 hash 的值

127.0.0.1:6379> hmset info age 10 level 10

# hmget ... 批量獲取 hash 的值

127.0.0.1:6379> hmget info name age level

# hgetall 獲取全部的數(shù)據(jù),

127.0.0.1:6379> hgetall info

# hdel field1 刪除hash指定key字段!對應的value值也就消失了!

127.0.0.1:6379> hdel info level

# hlen 返回哈希表 key 中字段的數(shù)量

127.0.0.1:6379> hlen info

# hexists 查看哈希表 key 中,給定域 field 是否存在。

127.0.0.1:6379> hexists info name

# hkeys 列出該 hash 集合的所有 field

127.0.0.1:6379> hkeys info

# hvals 列出該 hash 集合的所有 value

127.0.0.1:6379> hvals info

# hincrby 為哈希表 key 中的域 field 的值加上增量 1 -1

# hincrbyfloat 為哈希表 key 中的域 field 的值加上增量小數(shù)

127.0.0.1:6379> hincrby info age 1

# hsetnx 將哈希表 key 中的域 field 的值設置為 value ,當且僅當域field 不存在 存在報錯

127.0.0.1:6379> hsetnx info name 555

6.?有序集合 Zset

Redis 有序集合 zset 與普通集合 set 非常相似,是一個沒有重復元素的字符串集合

不同之處是有序集合的每個成員都關(guān)聯(lián)了一個評分(score),這個評分(score)被用來按照從最低分到最高分的方式排序集合中的成員。集合的成員是唯一的,但是評分可以是重復了

因為元素是有序的, 所以你也可以很快的根據(jù)評分(score)或者次序(position)來獲取一個范圍的元素。

訪問有序集合的中間元素也是非??斓?因此你能夠使用有序集合作為一個沒有重復成員的智能列表

# zadd … 將一個或多個 member 元素及其 score 值加入到有序集 key 當中。

127.0.0.1:6379> zadd info 200 name 300 age

# zrange [WITHSCORES] 返回有序集 key 中,下標在 之間的元素 帶 WITHSCORES,可以讓分數(shù)一起和值返回到結(jié)果集

127.0.0.1:6379> zrange info 0 -1

# zrevrange salary 0 -1 # 從大到進行排序!

127.0.0.1:6379> zrevrange info 0 -1

# zrangebyscore key min max [withscores] [limit offset count] 返回有序集 key 中,所有 score 值介于 min 和 max 之間(包括等于 min 或 max )的成員。有序集成員按 score 值遞增(從小到大)次序排列

127.0.0.1:6379> zrangebyscore info 100 200

127.0.0.1:6379> zrangebyscore info (100 200 #大于100 不包含100

# 顯示全部 從小到大

127.0.0.1:6379> zrangebyscore info -inf +inf

# zrevrangebyscore key max min [withscores] [limit offset count] 同上,改為從大到小排列

127.0.0.1:6379> zrevrangebyscore info 900 100

# zcard # 獲取有序集合中的個數(shù)

127.0.0.1:6379> zcard info

# zincrby 為元素的 score 加上增量

127.0.0.1:6379> zincrby info 200 age

# zrem 刪除該集合下,指定值的元素

127.0.0.1:6379> zrem info age

# zcount 統(tǒng)計該集合,分數(shù)區(qū)間內(nèi)的元素個數(shù) 大于等于100且小于200

127.0.0.1:6379> zcount info 100 200

# zrank 返回該值在集合中的排名,從 0 開始 順序

# zrevrank 返回該值在集合中的排名 倒序

127.0.0.1:6379> zrank info name

127.0.0.1:6379> zrevrank info name

# zscore 返回對應元素的score

127.0.0.1:6379> zscore info name

# ZMPOP numkeys key [key ...] [COUNT count]從鍵名列表中的第一個非空排序集中彈出一個或多個元素,它們是成員分數(shù)對

#當使用MIN修飾符時,彈出的元素是第一個非空排序集中得分最低的元素。MAX修改器會彈出得分最高的元素,numkeys 表示 key 的數(shù)量。

127.0.0.1:6379> zmpop 1 set1 min

7.Bitmap

位存儲 由0和1狀態(tài)表現(xiàn)的二進制位的bit數(shù)組

位圖的本質(zhì)是數(shù)組 底層數(shù)據(jù)結(jié)構(gòu)是String

Bitmap支持的最大位數(shù)是2^32位,它可以極大的節(jié)約存儲空間,使用512M內(nèi)存就可以存儲多達42.9億的字節(jié)信息(2^32=4294967296)

使用場景:用戶簽到、打卡等

# setbit 設置 Bitmaps 中某個偏移量的值(0 或 1) offset:偏移量從 0 開始

127.0.0.1:6379> setbit sign 0 1

(integer) 0

127.0.0.1:6379> setbit sign 1 0

(integer) 0

127.0.0.1:6379> setbit sign 2 0

(integer) 0

127.0.0.1:6379> setbit sign 3 1

(integer) 0

127.0.0.1:6379> setbit sign 4 1

(integer) 0

127.0.0.1:6379> setbit sign 5 0

(integer) 0

127.0.0.1:6379> setbit sign 6 0

(integer) 0

# getbit 獲取 Bitmaps 中某個偏移量的值 從 0 開始算

127.0.0.1:6379> getbit sign 3

(integer) 1

127.0.0.1:6379> getbit sign 6

(integer) 0

# strlen 不是字符串長度而是占據(jù)幾個字節(jié) 超過8位后自己按照8位一組一byte再擴容 統(tǒng)計字節(jié)數(shù)占用多少

127.0.0.1:6379> strlen sign

# bitcount [start end] ] 統(tǒng)計字符串從 start 字節(jié)到 end 字節(jié)比特值為 1 的數(shù)量

127.0.0.1:6379> bitcount sign 6

# bitop and(or/not/xor) [key…]

# bitop 是一個復合操作, 它可以做多個 Bitmaps 的 and(交集) 、 or(并集) 、 not(非) 、 xor(異或) 操作并將結(jié)果保存在 destkey 中

8.HyperLogLog

Redis在2.8.9版本添加了HyperLogLog 結(jié)構(gòu)。

HyperLogLog 是 Redis 提供的一種用于基數(shù)統(tǒng)計的數(shù)據(jù)結(jié)構(gòu),它可以用來估算集合中不重復元素的數(shù)量。HyperLogLog 的優(yōu)點是內(nèi)存消耗固定且很小(標準情況下為 12KB),與集合中元素的數(shù)量無關(guān),適合處理大規(guī)模數(shù)據(jù)集。HyperLogLog 提供的結(jié)果是一個近似值,標準誤差為 0.81%。

使用場景包括但不限于:

統(tǒng)計獨立訪客數(shù)(UV)。統(tǒng)計應用的日活躍用戶數(shù)(DAU)或月活躍用戶數(shù)(MAU)。統(tǒng)計用戶搜索不同詞條的數(shù)量。統(tǒng)計注冊 IP 數(shù)量。

HyperLogLog 只能提供不精確的去重計數(shù)方案,且不能返回集合中的元素本身。因此,它適用于對精度要求不是非常高的場景,而在需要精確計數(shù)時,可能需要考慮其他數(shù)據(jù)結(jié)構(gòu)或方法

# pfadd [element ...] 添加指定元素到 HyperLogLog 中

127.0.0.1:6379> pfadd name redis

# pfcount [key ...] 計算 HLL 的近似基數(shù),可以計算多個 HLL,比如用 HLL 存儲每天的 UV,計算一周的 UV 可以使用 7 天的 UV 合并計算即可

127.0.0.1:6379> pfcount name

# pfmerge [sourcekey ...] 將一個或多個 HLL 合并后的結(jié)果存儲在另一個 HLL 中,比如每月活躍用戶可以使用每天的活躍用戶來合并計算可得

127.0.0.1:6379> pfmerge name name2

9.Geospatial

Redis 的 Geospatial 功能是 Redis 3.2 版本引入的一種用于處理地理空間數(shù)據(jù)的數(shù)據(jù)類型。它允許用戶存儲地理位置信息,并執(zhí)行一些地理相關(guān)的操作,如計算兩個地點之間的距離、查找給定半徑內(nèi)的所有地點等。

Redis Geospatial 使用的是有序集合(sorted sets)來存儲地理位置信息,并通過 Geohash 編碼來實現(xiàn)地理位置的索引和查詢

# geoadd [longitude latitude member...] 添加地理位置(經(jīng)度,緯度,名稱)

# 規(guī)則:兩級無法直接添加,我們一般會下載城市數(shù)據(jù),直接通過java程序一次性導入!

# 有效的經(jīng)度從-180度到180度。

# 有效的緯度從-85.05112878度到85.05112878度。

# 當坐標位置超出上述指定范圍時,該命令將會返回一個錯誤。

# redis-cli --raw 解決亂碼

127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai

127.0.0.1:6379> geoadd china:city 114.05 22.52 shenzhen 116.38 39.90 beijing

# geopos [member...] 獲得指定地區(qū)的坐標值

127.0.0.1:6379> geopos china:city beijing

# geodist [m|km|ft|mi ] 獲取兩個位置之間的直線距離

# 單位:

# m 表示單位為米[默認值]。

# km 表示單位為千米。

# mi 表示單位為英里。

# ft 表示單位為英尺。

# 如果用戶沒有顯式地指定單位參數(shù), 那么GEODIST 默認使用米作為單位

127.0.0.1:6379> geodist china:city beijing shanghai km

# georadius radius m|km|ft|mi 以給定的經(jīng)緯度為中心,找出某一半徑內(nèi)的元素

# WITHDIST: 在返回位置元素的同時, 將位置元素與中心之間的距離也一并返回

# WITHCOORD: 將位置元素的經(jīng)度和維度也一并返回。

# WITHHASH: 以 52 位有符號整數(shù)的形式, 返回位置元素經(jīng)過原始 geohash 編碼的有序集合分值。 這個選項主要用于底層應用或者調(diào)試, 實際中的作用并不大

# COUNT 限定返回的記錄數(shù)

# ASC: 查找結(jié)果根據(jù)距離從近到遠排序

# DESC: 查找結(jié)果根據(jù)從遠到近排序

127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km

# georadiusbymember 根據(jù)儲存在位置集合里面的某個地點獲取指定范圍內(nèi)的地理位置集合

# georadiusbymember與georadius用法類似,只不過把參數(shù)經(jīng)緯度改成了存在key里的member成員而已

127.0.0.1:6379> georadiusbymember china:city chengdu 300 km

# geohash 返回一個或多個位置對象的 geohash 值,該命令將返回11個字符的Geohash字符串!

# 將二維的經(jīng)緯度轉(zhuǎn)換為一維的字符串,如果兩個字符串越接近,那么則距離越近!

127.0.0.1:6379> geohash china:city beijing chongqi

1) "wx4fbxxfke0"

2) "wm5xzrybty0"

柚子快報邀請碼778899分享:緩存 Redis基本命令詳解

http://yzkb.51969.com/

相關(guān)文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19548593.html

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄