Redis
概述(參考:https://www.runoob.com/redis/redis-conf.html)
Redis介紹
Redis的安裝(單機版,集羣版,分佈式集羣版)
redis實操:
數據類型(常用的五大數據類型,string,list,set,hash,zset)
命令行
java api
Redis介紹
說明:
①redis是基於內存的nosql的數據庫。(nosql: not only structure query language)
Redis是一種面向“鍵/值”對數據類型的內存數據庫
②no sql數據庫有:
hbase
mongodb
redis
③redis的性能高:
讀的速度:11萬次/秒
寫的速度:8.1萬次/秒
④redis底層的源碼使用c來開發的,作者也提供了各種語言的客戶端(java,php等等)
不能使用命令jps(java processor status)查看進程名
netstat -tunlp | grep 6379
⑤也可以用作消息的中間件(包含消息的發佈和訂閱)。
⑥應用在高併發和實時請求的場景。
redis 安裝
單機版
安裝步驟
→ Redis安裝(單機版)
1,Linux下安裝:
下載
下載地址:http://download.redis.io/releases/
這裏下載的版本爲redis-3.2.0
soft]# wget http://download.redis.io/releases/redis-3.2.0.tar.gz
soft]# tar -zxvf redis-3.2.0.tar.gz
opt]# cd redis-3.2.0/
編譯
redis-3.2.0]# make
編譯完成了會在src目錄下產生redis的相關命令
注意:若是make命令不能使用,需要在線安裝make(前提:虛擬機可以連接外網)
安裝:
yum -y install gcc automake autoconf libtool make
安裝g++:
yum install gcc gcc-c++
重命名,配置環境變量
mv redis-3.2.0/ redis
# Redis Profile
# 配置Redis的環境變量,在/etc/profile.d/bigdata-etc.sh
export REDIS_HOME=/opt/redis
export PATH=$PATH:$REDIS_HOME/src
source生效
注意:若是希望在任意的目錄下都可以使用redis相應的執行文件的話,需要配置環境量。
2, Redis啓動
①修改redis的核心配置文件
Redis的配置文件位於Redis的安裝目錄之下,文件名爲redis.conf。修改redis.conf中的配置項:
daemonize yes(後臺運行)
logfile /opt/redis/logs/redis.log(日誌文件,目錄必須存在,創建目錄:mkdir -p /opt/redis/logs)
bind NODE01
②正式啓動
服務端:redis-server redis.conf
查看服務端是否啓動
netstat -tunlp | grep 6379--->查看6379端口
[root@NODE01 redis]# netstat -tunlp | grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 5136/redis-server 1
③客戶端連接redis server以及關閉redis server
客戶端連接: src/redis-cli -h NODE01 -p 6379 或者 redis-cli -h NODE01
關閉redis服務(下面的命令是關閉服務器db server)
redis-3.2.0]# src/redis-cli -h NODE01 shutdown
redis.conf核心配置文件介紹
→ 配置信息的查看以及編輯
可以通過config命令來查看或設置配置項。
1,查看
語法,Redis config命令格式如下:
redis localost:6379> config get 配置名稱
如: redis localost:6379> config get loglevel
1) "loglevel"
2) "notice"
使用*號獲取所有配置項:redis localost:6379> config get *
2,編輯
可以通過修改redis.conf文件或使用config set命令來修改配置
方式1:永久方式 → 可以通過修改redis.conf文件
方式2:臨時方式(redis server不重啓,一直有效,重啓失效)→ config set命令來修改配置
基本語法:
redis localost:6379> config set 配置名 配置值
eg: redis localost:6379> config set loglevel "warning"
redis localost:6379> config get loglevel
1) "loglevel"
2) "warning" -->對當前服務有效,之後當服務重啓之後,纔會失效
redis的安全設置
→ Redis的安全設置
設置Redis密碼,修改redis.conf
requirepass root --->將redis密碼修改成爲root
啓動客戶端(連接遠程的redis服務器):src/redis-cli -h NODE01 -p 6379 -a root
關閉服務:redis-cli -a root -h NODE01 shutdown
注意:爲了後續演示方便,建議將requirepass設置屏蔽掉。
redis常用數據類型
介紹
Redis支持五種數據類型:
string(字符串)
hash(哈希)
list(列表)
set(集合)
zset(sorted set:有序集合)
在redis命令行,使用Ctrl + l, 可以清空屏幕。
注意:
redis參考教程:
http://www.runoob.com/redis/redis-tutorial.html
redis常用數據類型之string
意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB(默認的值,可以在redis.conf中進行定製)。
命令 描述
-------------------------------------------------------------------------------------
SET key value 設置指定key的值(會覆蓋無視數據類型)
GET key 獲取指定key的值
GETRANGE key start end 返回key中字符串值的子字符(從0開始的閉區間[start, end])
GETSET key value 將給定key的值設爲value,並返回key的舊值(old value)
GETBIT key offset 對key所儲存的字符串值,獲取指定偏移量上的位(bit)
MGET key1 [key2..] 獲取所有(一個或多個)給定key的值
SETBIT key offset value 對key所儲存的字符串值,設置或清除指定偏移量上的位(bit)
SETEX key seconds value 將值value關聯到key,並將key的過期時間設爲seconds(以秒爲單位)
SETNX key value 只有在key不存在時設置key的值
SETRANGE key offset value 用value參數覆寫給定key所儲存的字符串值,從偏移量offset開始
STRLEN key 返回key所儲存的字符串值的長度
MSET key value [key value ...] 同時設置一個或多個key-value對
MSETNX key value [key value ...] 同時設置一個或多個key-value對,當且僅當所有給定key都不存在
PSETEX key milliseconds value 這個命令和SETEX命令相似,但它以毫秒爲單位設置key的生存時間,而不是像SETEX命令那樣,以秒爲單位
INCR key 將key中對應儲存的數字值增一
INCRBY key increment 將key所儲存的值加上給定的增量值(increment)
INCRBYFLOAT key increment 將key所儲存的值加上給定的浮點增量值(increment)
DECR key 將key中儲存的數字值減一
DECRBY key decrement key 所儲存的值減去給定的減量值(decrement)
APPEND key value 如果key已經存在並且是一個字符串,APPEND命令將value追加到key原來的值的末尾
redis常用數據類型之hash(哈希)
Redis hash 是一個鍵值對集合。Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。
每個hash可以存儲2的32-1次冪鍵值對(40多億)。
命令 描述
-------------------------------------------------------------------------------------
命令 描述
HDEL key field2 [field2] 刪除一個或多個哈是表字段
HEXISTS key field 查看hash表key中,指定字段是否存在
HGET key field 獲取hash表中指定字段的值
HGETALL key 獲取所有的字段和值
HINCRBY key field increment 爲指定字段的整數值加上增量increment
HINCRBYFLOAT key field increment 爲指定字段的浮點值加上增量increment
HKEYS key 獲取所有的字段
HLEN key 獲取字段的數量
HMGET key field1 [field2] 獲取所有給定字段的值
HMSET key f1 v1 [f2 v2] 同時將多個file-value設置到key中
HSET key field value 將哈希表key的field設置爲value
HSETNX key field value 當在field不存在時,設置相關字段的值
HVALS key 獲取所有的值
HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的鍵值對
redis常用數據類型之List(鏈表)
Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。
列表最多可存儲 2的32-1次冪元素 (4294967295, 每個列表可存儲40多億)。 (列表:雙向鏈表)
注意: ①list是雙向鏈表
②有序,不排重
③其他類型可以通過值直接轉換成string類型,反之則不行。如:不能將string轉換爲list
命令 描述
-------------------------------------------------------------------------------------
BLPOP key1 [key2 ] timeout 移除並獲取列表中的第一個元素,如果沒有會阻塞列表直到超時【單位是秒s】或發現可彈出元素爲止
BRPOP key1 [key2 ] timeout 移除並獲取列表中的最後一個元素,如果沒有會阻塞列表直到超市或發現可彈出元素爲止
BRPOPLPUSH source destination timeout 從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它,如果沒有元素會阻塞列表知道等待超時或發現可彈出元素爲止
LINDEX key index 通過索引獲取列表中的元素
LINSERT key BEFORE|AFTER pivot value 在列表的元素前或後插入元素
LLEN key 獲取列表長度
LPOP key 移出並獲取列表的第一個元素
LPUSH key value1 [value2] 將一個或多個值插入到列表頭部
LPUSHX key value 將一個或多個值插入到已存在的列表頭部
LRANGE key start stop 獲取列表指定返回內的元素
LREM key count value 移出列表元素
LSET key index value 通過索引設置列表元素的值
LTRIM key start stop 對一個列表進行修剪(trim),也就是說,讓列表只保留指定區間內的元素,刪除其它
RPOP key 移出並獲取列表最後一個元素
RPOPLPUSH source destination 移出列表的最後一個元素,並將該元素添加到另一列表並返回
RPUSH key value1 [value2] 在列表中添加一個或多個值
RPUSHX key value 爲已存在的列表添加值
redis常用數據類型之Set(集合)
→類型4之Set(集合)
Redis的Set是string類型的無序集合。
集合是通過哈希表實現的,與Java中的Set集合類似(無序,排重)
注意:
①根據集合內元素的唯一性,第二次插入相同的元素將被忽略。
集合中最大的成員數爲 2的32 - 1次方 (4294967295, 每個集合可存儲40多億個成員)。
命令 描述
-----------------------------------------------------------------------------------
SADD key member1 [member2] 向集合添加一個或多個成員
SCARD key 獲取集合的成員數(size)
SDIFF key1 [key2] 返回給定所有集合的差集 (差集 = 集合 - 交集)
SDIFFSTORE dest key1 [key2] 返回並保存給定集合差集保存到dest中
SINTER key1 [key2] 返回給定集合的交集
SINTERSTORE dest key1 [key2] 返回並保存給定集合的交集到dest中
SISMEMBER key member 判斷member元素是否是集合key的成員
SMEMBERS key 返回集合中所有成員
SMOVE src dest member 將member元素從src移動到dest中
SPOP key 移除並返回集合中的一個隨機元素
SRANDMEMBER key [count] 返回集合中一個或多個隨機元素
SREM key member1 [member2] 移除集合中一個或多個成員
SUNION key1 [key2] 返回所有給定集合的並集
SUNIONSTORE dest key1 [key2] 返回並保存給定集合的並集到dest
SSCAN key cursor [match pattern] [count count] 迭代集合中的元素
redis常用數據類型之zset(集合)
類型5之zset(集合)
zset(sorted set:有序集合)
Redis zset和set一樣也是string類型元素的集合,且不允許重複的成員。不同的是每個元素都會關聯一個double類型的分數。
redis正是通過分數來爲集合中的成員進行從小到大的排序。
zset的成員是唯一的,但分數(score)卻可以重複。
zadd命令 添加元素到集合,元素在集合中存在則更新對應score
注意:
①排重,且排序的
②如何來排序的:
a) 若得分相同,根據值的字典順序升序排列的
b) 若得分不同,根據分數的升序來排列的
命令 描述
——————————————————————————————————————————————————————————
Zadd key score1 member1 [score2 member2] 想有序集合添加一個或多個成員,或是更新已經存在成員的分數
Zcard key 獲取有序集合的成員數
Zcount key min max 計算在有序集合中指定區間分數的成員數
Zincrby key increment member 有序集合中對指定成員的分數上增量incr
Zinterstore dest nkeys key [key..] 計算給定的一個或多個有序集的交集並保存在新的有序集合dest中
Zlexcount key min max 在有序集合中計算指定字典區間內成員數量
Zrange key start stop [withscores] 通過索引區間返回有序集合成指定區間內的成員
Zrangebylex key min max [limit offset count] 通過字典區間返回有序集合的成員
Zrangebyscore key min max [withscores] [limit] 通過分數返回有序集合指定區間內的成員
Zrank key member 返回有序集合中指定成員的索引
Zrem key member [member ...] 移除有序集合中的一個或多個成員
Zremrangebylex key min max 移除有序集合中給定的字典區間的所有成員
Zremrangebyrank key start stop 移除key中給定的排名區間的所有成員
Zremrangebyscore key start stop 移除key中給定的分數區間的所有成員
Zrevrange key start stop [withscores] 返回有序key中指定區間內的成員,通過索引,分數從高到低
Zrevrangebysocre key max min [withscores] 返回有序key中指定分數區間內的成員,通過索引,分數從高到低
Zrevrank key memeber 返回key中指定成員的排名,key成員按分數值遞減排序
Zscore key member 返回key中member的分數
Zunionstore dest numkeys key [key...] 計算給定的一個或多個有序集的並集,並存儲到新的dest中
Zscan key cursor [match pattern] [COUNT count] 迭代有序集合中的元素(包括元素成員和元素分值)