Redis系列記錄(一)——Redis入門

一、認識Redis

  • Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
  • Redis的所有操作都是原子性的,意思就是要麼成功執行要麼失敗完全不執行。
  • Redis運行在內存中但是可以持久化到磁盤,所以在對不同數據集進行高速讀寫時需要權衡內存,因爲數據量不能大於硬件內存。

二、啓動Redis

2.1 前臺模式

redis-server

 此命令將會以默認配置啓動Redis服務, 默認端口是6379

前端模式的缺點是啓動完成後,不能再進行其他操作 ,不建議使用前臺模式啓動

2.2後臺模式

如果要設置爲後臺啓動啓動就要修改此配置文件redis.conf中的daemonize爲yes。我這裏是裝在windows上的,而配置文件中表示:

 所以只能換一種方法了:

  1. 進入redis根目錄,打開cmd窗口
  2. 輸入:redis-server --service-install redis.windows.conf --loglevel verbose ( 安裝redis服務 )
  3. 輸入:redis-server --service-start ( 啓動服務 )
  4. 輸入:redis-server --service-stop (停止服務)

 三、連接Redis服務

 連接端口爲6379 Host爲127.0.0.1的redis服務器

如果在配置文件中指定了端口號和ip地址:

redis-cli -p 端口號 -h IP

獲取日誌等級    通過CONFIG GET * 可以查看所有配置項

Redis 總共支持四個級別:debug、verbose、notice、warning,默認爲 notice

舉例設置日誌級別爲debug ,它用get、set其實是很好理解的

 下面列舉一些主要的配置:

配置項 說明
timeout 300
當客戶端閒置多長秒後關閉連接,如果指定爲 0 ,表示關閉該功能
databases 16
設置數據庫的數量,默認數據庫爲0,可以使用SELECT 命令在連接上指定數據庫id
dbfilename dump.rdb
指定本地數據庫文件名,默認值爲 dump.rdb
appendfsync everysec

指定更新日誌條件,共有 3 個可選值:

  • no:表示等操作系統進行數據緩存同步到磁盤(快)
  • always:表示每次更新操作後手動調用 fsync() 將數據寫到磁盤(慢,安全)
  • everysec:表示每秒同步一次(折中,默認值)
dir ./
指定本地數據庫存放目錄

 三、Redis支持的數據類型

在瞭解這些數據類型之前,先看一下幾個常用命令

keys *  查看所有key
ttl key 查看剩餘存活時間
del key 刪除key
select 5 切換到第六個數據庫
flushDB 刪除當前庫的所有數據

Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

1、string 類型是 Redis 最基本的數據類型,string 類型的值最大能存儲 512MB。

實例中出現中文亂碼問題

我們把redis客戶端關閉,在cmd窗口打開 ,使用redis-cli --raw

 常用命令:

指令 描述
set 設置一個key/value
get 根據key獲得對應的value
mset 一次設置多個key value
mget 一次獲得多個key的value
getset getset age 19獲得原始key的值,同時設置新值
strlen 獲得對應key存儲value的長度
append 爲對應key的value追加內容
getrange 截取value的內容,對原始的值沒有影響
setex  setex key ex value設置一個key存活的有效期(秒)
psetex 設置一個key存活的有效期(豪秒)
setnx 只有當這個key不存在時等效set操作
msetnx 可以同時設置多個key,在key不存在時有效
decr 進行數值類型的-1操作
decrby 根據提供的數據進行減法操作
incr 進行數值類型的+1操作
incrby 根據提供的數據進行加法操作
incrbyfloat 根據提供的數據加入浮點數

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

指令 描述
hset 設置一個key/value對
hget 獲得一個key對應的value
hgetall 獲得所有的key/value對
hdel 刪除某一個key/value對
hexists 判斷一個key是否存在
hkeys 獲得所有的key
hvals 獲得所有的value
hmset 設置多個key/value
hmget 獲得多個key的value
hsetnx 設置一個不存在的key的值
hincrby hincrby key k 2爲value進行加法運算
hincrbyfloat 爲value加入浮點值

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

指令 描述
lpush 將某個值加入到一個key列表頭部
lpushx 同lpush,但是必須要保證這個key存在
rpush 將某個值加入到一個key列表末尾
rpushx 同rpush,但是必須要保證這個key存在
lpop 返回和移除列表的第一個元素
rpop 返回和移除列表的最後一個元素
lrange 獲取某一個下標區間內的元素
llen 獲取列表元素個數
lset lset key index value設置某一個位置的元素(替換已有的某個值)
lindex lindex key index獲取某一個位置的元素
lrem lrem key 2 xxx從列表頭起,刪除對應個數的指定元素
ltrim 保留列表中特定區間內的元素,將其他的元素刪除;
linsert key afer/before old new 在某一個元素之前,之後插入新元素

 4、set集合是通過哈希表實現的

指令 描述
sadd 爲集合添加元素
smembers 顯示集合中所有元素無序
scard 返回集合中元素的個數
spop 隨機返回並移除一個元素
smove smove setFrom setTo xxx從一個集合中向另一個集合移動元素
srem 從集合中刪除一個元素
sismember sismember set77 值 判斷一個集合中是否含有這個元素
srandmember 隨機返回元素,對原始數據沒有影響
sdiff sdiff seta setb減去兩個集合中共有的元素
sinter 求交集
sunion 求並集

5、 zset 和 set 一樣也是string類型元素的集合,且不允許重複的成員。

不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來爲集合中的成員進行從小到大的排序。

zset的成員是唯一的,但分數(score)卻可以重複。

指令 描述
zadd zadd key 10 a 5 b 30 c添加一個有序集合元素,根據元素的score排序
zcard 返回集合的元素個數
zrange 返回一個範圍內的元素
zrangebyscore 照分數查找一個範圍內的元素
zrank zrank key xx返回對應元素的排名
zrevrank 返回對應元素倒序排名
zscore zscore key xxx顯示某一個元素的分數
zrem 移除某一個元素
zincrby zincrby key 10 lining給某個特定元素加分

四、擴展

1、在Redis中Key是二進制數,因此字符串和圖片都可以作爲Key,可以通過keys命令來查詢key

*匹配任意字符,?匹配任意一個字符

2、通過exists來判斷key是否存在   和del一樣,如果是多個key則用空格分開,結果是累計的結果。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章