3、Redis 基礎

Redis的五大數(shù)據(jù)類型

  • String(字符串)

    • stringredis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個valuestring類型是二進制安全的。意思是redisstring可以包含任何數(shù)據(jù)。比如jpg圖片或者序列化的對象 。
    • string類型是Redis最基本的數(shù)據(jù)類型,一個redis中字符串value最多可以是512M
  • Hash(哈希,類似java里的Map)

    • Redis hash 是一個鍵值對集合。Redis hash是一個string類型的fieldvalue的映射表,hash特別適合用于存儲對象。類似Java 里面的Map<String,Object>
  • List(列表)

    • Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素導列表的頭部(左邊)或者尾部(右邊)。它的底層實際是個鏈表
  • Set(集合)

    • RedisSet是string類型的無序集合。它是通過HashTable實現(xiàn)實現(xiàn)的。
  • Zset(sorted set:有序集合)

    • Redis zsetset一樣也是string類型元素的集合,且不允許重復的成員。
    • 不同的是每個元素都會關聯(lián)一個double類型的分數(shù)。
    • redis正是通過分數(shù)來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(shù)(score)卻可以重復。

——————————————————————————————

Redis 鍵(key)

  • **keys * **:查詢當前數(shù)據(jù)庫存在的所有key(生產中不要輕易使用, 可以加一些通配符 keys k?
  • exists key:的名字,判斷某個key是否存在,返回數(shù)量值
  • move key db:當前庫就沒有了,被移除了。移到目標庫中去了
  • expire key 秒鐘:為給定的key設置過期時間
  • ttl key: 查看還有多少秒過期,-1表示永不過期,-2表示已過期
  • type key: 查看你的key是什么類型

Redis字符串(String)

  • 主要用于:單值單value
  • 常用命令—1:set/get/del(刪除)/append(追加)/strlen(長度)
    • del: 該命令可以刪除多條。
常用一 | center
  • 常用命令-2:Incr/decr/incrby/decrby(一定要是數(shù)字才能進行加減)
    • 相當于Oracle中的SEQUENCE-但是必須是數(shù)字才能加減
常用二 | center
  • 常用命令-3:getrange/setrange
    • getrange:獲取指定區(qū)間范圍內的值,類似between......and的關系
    • 從零到負一表示全部
    • setrange設置指定區(qū)間范圍內的值,格式是setrange key值 具體值
常用三 | center
  • 常用命令-4:setex(set with expire)鍵秒值/setnx(set if not exist)
    • setex:設置帶過期時間的key,動態(tài)設置。setex 鍵 秒值 真實值
常用四 | center
  • 常用命令-5:mset/mget(批量操作set、get)/msetnx
    • mset :同時設置一個或多個 key-value 對。
    • msetnx:同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在。
常用五 | center
  • 常用命令-6:getset(先get再set)
    • getset: 將給定 key 的值設為 value ,并返回 key 的舊值(old value)。
    • 簡單一句話,先get然后立即set
常用六 | center

Redis列表(List)

  • 主要用于:單值多value
  • 常用命令-1:lpush/rpush/lrange
    • 上文中提到過,list 底層是鏈表,所以lpush 和 rpush 就是分別從鏈表的頭和為插入
常用命令-1 | center
  • 常用命令-2:lpop/rpop
常用命令-2 | center
  • 常用命令-3:lindex按照索引下標獲得元素(從上到下)
常用命令-3 | center
  • 常用命令-4:llen key 獲取list長度
  • 常用命令-5: lrem key 刪list 中的N個value
常用命令-5 | center
  • 常用命令-6: ltrim key 開始index 結束index, 截取指定范圍的值后再賦值給原來key,
    • ltrim:截取指定索引區(qū)間的元素,格式是ltrim list的key 起始索引 結束索引
常用命令-6 | center
  • 常用命令-7:rpoplpush 源列表 目的列表
    • 移除列表的最后一個元素,并將該元素添加到另一個列表并返回
常用命令-7 | center
  • 常用命令-8:lset key index value
    • 向 key 中 index 位置 修改值為 value
常用命令-8 | center
  • 常用命令-9:linsert key before/after 值1 值2
    • 在list某個已有值的前后再添加具體值
常用命令-9 | center
  • 性能總結
    • 它是一個字符串鏈表,left、right都可以插入添加;
    • 如果鍵不存在,創(chuàng)建新的鏈表;
    • 如果鍵已存在,新增內容;
    • 如果值全移除,對應的鍵也就消失了。
    • 鏈表的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就很慘淡了。

Redis集合(Set)

  • 主要用于: 單值多value,同一個Key不能出現(xiàn)重復元素
  • 常用命令-1: sadd/smembers/sismember
常用命令-1 | center
  • 常用命令-2:scard,獲取集合里面的元素個數(shù)
常用命令-2 | center
  • 常用命令-3:srem key value 刪除集合中元素
常用命令-3 | center
  • 常用命令-4:srandmember key 某個整數(shù)
    • 從set集合里面隨機取出2個
    • 如果超過最大數(shù)量就全部取出,
    • 如果寫的值是負數(shù),比如-3 ,表示需要取出3個,但是可能會有重復值
常用命令-4 | center
  • 常用命令-5: spop key 隨機出棧
常用命令-5 | center
  • 常用命令-6:smove key1 key2 value 在key1里某個值,將key1里的某個值賦給key2
常用命令-6 | center
  • 數(shù)字集合類:
    • 差集:sdiff
    • 交集:sinter
    • 并集:sunion
數(shù)字集合類 | center

Redis哈希(Hash)

  • 主要用于: KV模式不變,但V是一個鍵值對,對于Bean 的映射非常好

  • **常用命令-1 **: hset/hget/hmset/hmget/hgetall/hdel

常用命令-1 | center
  • 常用命令-2:hlen
    • 獲取hash 長度
常用命令-2 | center
  • 常用命令-3:hexists key 在key里面的某個值的key
常用命令-3 | center
  • 常用命令-4:hkeys/hvals
    • 獲取key 和 valu 的集合
常用命令-4 | center
  • 常用命令-5:hincrby/hincrbyfloat
常用命令-5 | center
  • 常用命令-6:hsetnx
    • 不存在賦值,存在了無效。
常用命令-6 | center

Redis有序集合Zset(sorted set)

  • 在set基礎上,加一個score值。之前set是k1 v1 v2 v3,現(xiàn)在zset是k1 score1 v1 score2 v2

  • 常用命令-1:zadd/zrange Withscores

常用命令-1 | center
  • 常用命令-2:zrangebyscore key 開始score 結束score
常用命令-2 | center
  • 常用命令-3:zrem key 某score下對應的value值
    • zrem key score某個對應值,可以是多個值
常用命令-3 | center
  • 常用命令-4:zcard/zcount key score區(qū)間/zrank key values值,獲得下標值/zscore key 某分數(shù)對應值
    • zcard :獲取集合中元素個數(shù)
    • zcount:獲取分數(shù)區(qū)間內元素個數(shù),zcount key 開始分數(shù)區(qū)間 結束分數(shù)區(qū)間
    • zrank: 獲取value在zset中的下標位置
    • zscore:按照值獲得對應的分數(shù)
常用命令-4 | center
  • 常用命令-5:zrevrankzrevrange
    • zrevrank: 正序、逆序獲得下標索引值
常用命令-5 |center
  • 常用命令-6:·zrevrangebyscore key 結束score 開始score
    • zrevrangebyscore zset1 90 60 withscores 分數(shù)是反著來的
常用命令-6 | center
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,517評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,087評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,521評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,493評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,207評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,603評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,624評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,813評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 49,364評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,110評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,305評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,874評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,532評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,953評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,209評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,033評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,268評論 2 375

推薦閱讀更多精彩內容