筆者最初接觸Redis是由於瞭解了一些nosql方面的知識,以爲nosql是一個頗有意思的方面。像其中的mongodb,redis等等。當初也沒有深刻的去了解Redis,直到本身前段時間在寫一個web項目的時候須要用到緩存來進行性能優化我才仔細的來學習Redis。下面我就來講說我本身在學習Redis過程當中的一些心得。web
Redis是一個nosql數據庫,它採用字典結構以鍵值對的形式將數據所有存儲在內存中因此它讀寫的速度很快,所以不少項目用Redis作緩存用,我也是基於這個想法來學習Redis的。 Redis支持的數據類型分別是字符串(string)、散列(hash)、列表(list)、集合(set)、有序集合(sorted set)這五種。接下來我將仔細介紹下這幾種數據結構的用法和對應的命令。redis
字符串類型:字符串類型是Redis中最基本的數據類型,是其餘四種數據類型的基礎。它能存儲任何形式的字符串(二進制數據、Json對象、圖片等),它的最大數據容量是512MB。sql
經常使用命令:mongodb
set key value //賦值數據庫
get key //取值緩存
keys * //查看全部的鍵性能優化
exists key //判斷某個鍵是否存在數據結構
del key //刪除一個鍵nosql
type key //獲取鍵的類型性能
incr/decr key //給鍵增長/減小一
incrby/decrby key increment/decrement //給鍵增長/減小一個整數
incrbyfloat key increment //增長浮點數
strlen key //返回鍵的長度
mset/mget //同時設置或者獲取多個值
散列類型:散列類型的鍵值是一種字典結構,存儲了字段和字段值的映射。可是字段值只能是字符串,不支持其餘數據類型(Redis的其餘數據類型也都不支持嵌套,只能是字符串。)。
經常使用命令:
hset key field value //賦值。不區分插入和更新操做,當鍵不存在是會自動創建。
hget key field //取值
hgetall key //取出全部的值
hexists key field //判斷字段是否存在
hsetnx key field value //字段不存在時便賦值
hincrby key field increment //增長指定的數字,沒有自增
hdel key field //刪除一個或者多個字段,返回被刪除的個數
hkeys key //只獲取字段名
hvals key //只獲取字段值
hlen key //只獲取字段數量
列表類型:列表是個有序的字符串,向兩端添加或者刪除元素。它是使用雙向鏈表實現的。
經常使用命令:
lpush/rpush list value //向左/右增長元素
lpop/rpop list //從左/右彈出元素
llen list //獲列表的元素個數
lrange list start stop //得到列表片斷(左邊索引爲0,若是爲負則從右邊開始) lrange key -1 0 則爲獲取全部的元素
lrem list count value //刪除列表中前count個值爲value的元素
rpoplpush oldlist newlist //將原列表的值放入新列表
集合類型:集合中的元素都是不一樣的,並且沒有順序。它能夠求交集、並集、差集。
經常使用命令:
sadd set member //增長一個元素給集合(沒有則建立)
srem set member //刪除一個或多個元素
smembers set //返回集合中全部的元素
sismember set member //判斷元素是否存在於集合中
sdiff setA setB //求差集
sinter setA setB //求交集
sunion setA setB //求並集
sdiffstore destination setA setB //將求到的差集結果保存在destination中
srandmember set num //隨機獲取一個或多個元素(看後面加的參數)
spop set //從集合中隨機彈出一個元素
有序集合:和集合相比給每一個元素都關聯了個分數。咱們除了能夠進行集合的操做外,還能夠獲取分數最高或者最低的幾個元素。
經常使用命令:
zadd key score member //加入元素和對應分數,支持整數和雙精度浮點,若是存在則修改。其中+inf和-inf表明正負無窮大
zscore key member //得到元素的分數
zrange/zrevrange key start stop //按分數從順序/逆序排序
zrangebyscore key min (max //返回min和max之間的數左括號表明不包含
zincrby key increment member //給元素增長值
zcount key min max //獲取指定範圍元素的個數
zcard key //獲取集合中元素的數量
zrem key member //刪除元素
zremrangebyrank key start stop //按排名範圍刪除元素
zremrangebyscore key min max //刪除分數範圍值
zrank key member //元素按分數大小排名
zrevrank key member //從大到小排名
結語:我的學習總結有遺漏錯誤的地方還但願你們留言斧正,多多交流一塊兒學習。