更新中...
目錄
一、安裝
1,一般軟件包在/opt目錄下,所以先cd /opt目錄
2,下載安裝包到opt目錄,並解壓
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar xzf redis-5.0.3.tar.gz
3, 進入 redis-5.0.3目錄,執行make命令(已經安裝gcc編譯器前提下)
cd redis-5.0.3
make
4,make完執行make install安裝
5,進入cd /usr/local/bin目錄可以看到生成的文件
6,在/目錄下創建myredis目錄來存儲redis.conf文件
7,去opt目錄下的redis目錄中備份redis.conf文件,不影響源文件
8,修改myredis目錄下的redis.conf配置文件
改no爲yes,這樣控制檯關閉還會在後臺運行
9,查看進程,否有啓動redis
方式一:如下圖還未啓動
方式二: lsof -i:6379
如圖未啓動
10,redis-server /myredis/redis.conf 啓動
11,連接Redis,ping返回PONG代表啓動成功
打開redis終端:redis-cli
12,測試鍵值對數據
13,單元測試效率
redis-benchmark
結果,每秒鐘4萬
14,關閉
二、基礎
1,查看配置文件,看到默認有16個庫
選擇庫
2,查看庫的key數量
DBSIZE
3,列出當前庫的所有key值
keys *
4,刪除key
FLUSHDB:刪除當前庫的所有key
FLUSHALL:刪除16個庫的所有key
三、Redis常用5大數據類型
String(字符串)、Hash(哈希)、List(列表)、Set(集合)和Zset(sorted set:有序集合)
1,String
一個key對應一個value。
string類型是二進制安全的,意思是redis的string可以包含任何數據,比如jpg圖片或者序列化的對象。
string類型是redis最基本的數據類型,一個redis中字符串value最多可以是512M。
2,Hash
Hash是一個鍵值對集合,是一個string類型的field和value的映射表,hash特別適合用於存儲對象
類似於Java的Map<String,Object>
3,List
單值多value
List是簡單的字符串列表,安裝插入順序排列,你可以添加一個元素導列表的頭部(左邊)或者尾部(右邊)。
它的底層實際是個鏈表
4,Set
Set是string類型的無序集合,它通過HashTable實現的。
5,Zset
zset和set一樣也是string類型元素的集合,且不允許重複的成員
不同的是每個元素都會關聯一個double類型的分數。
redis正是通過分數來未集合中的成員進行從小到大的排序。zset的成員是唯一的,但是分數(socre)卻可以重複。
四、常用指令
-
Redis鍵(key)
1,判斷key是否存在
存在返回1,不存在返回0
2,移動k1到2號庫
move k1 2
3,查看鍵值對活多久
-1 永不過期
設置k2活10秒:EXPIRE k2 10
還剩下6秒
-2已經過期
4,查看key類型
type key
庫中存在key則更新值
-
Redis字符串(String)
1,set/get/del/append/strlen/
2,Incr/decr/incrby/decrby一定要是數字纔可以進行加減
Incr/decr:加1/減1
incrby/decrby:加指定值
3,getrange/setrange
範圍內截取字符串/設置字符串
4,setex/setnx
設置過期時間/存在不設置值
5,mset/mget/msetnx
設置多個值/獲取多個值/設置多個值,只要有一個已經存在就不插入
-
Redis列表(List)
1,lpush/rpush/lrange
lrange list01 0 -1//讀取list01表,-1表示到結束
lpush list01 1 2 3 4 5//往list01裏添加5個數據。左邊的是怎麼進去倒着出來
rpush list02 1 2 3 4 5//往右邊的是怎麼進去怎麼出
2,lpop/rpop
彈出棧頂或者棧底
3,lindex
按照索引下標獲取元素(從上到下)
4,llen
獲取列表長度
5,lrem key
刪N個value
如下刪除2個3
6,LTRIM
截取出內容再賦值給原來的列表
7,rpoplpush
RPOPLPUSH 源列表 目的列表
8,lset key index value
設置某個位置的值
9,linsert key before/after 值1 值2
將某個值插入到某個值的後面
list總結
是一個字符串鏈表,左右都可以插入;
如果鍵不存在,則創建,存在則更新內容;
如果值全部移除,對應的鍵也就消失了;
鏈表的操作無論是頭和尾效率都極高,但是對中間的操作效率就很低。
-
Redis集合(Set)
單值多value
1,sadd/smembers/slsmember
sadd:添加集合,會去除重複的
smembers:查看集合
slsmember:判斷值是否存在
2,scard獲取集合裏面的元素個數
3,srem key value 刪除集合中元素
4,srandmember key 某個整數(隨機出幾個數字)
比如100個人,抽10個人中紅包
5,spop key 隨機出棧
6,smove key1 key2 在key1裏的某個值 作用是將key1的某個值賦給key2
7,數學集合-
差集sdiff
以第一個集合爲準,set2與set1對比,差什麼就顯示出來
交集sinter
與第一個的交集
並集sunion
與第一個的並集
-
Redis哈希(Hash)
KV模式不變,但V是一個鍵值對
1,hset/hget/hmset/hmget/hgetall/hdel
hset:
hset user id 11
hget:
hget user id
hmset:
hmset customer id 1 name lisi age 20
hmget:
hmget customer id name age
hgetall:
獲取所有的鍵值對
hgetall customer
hdel:
刪除鍵值對
hdel user name
2,hlen
獲取鍵值對個數
3,hexists key 在key裏面的某個值的key
存在爲1,不存在爲0
4,hkeys/hvals
hkeys:獲取所有的key名稱
hvals:獲取所有的values值
5,hincrby/hincrbyfloat
hincrby:整數加
hincrbyfloat:浮點數加
hset student1 score 92.3
6,hsetnx
不存在則插入,存在則不操作
-
Resis集合Zset(sorted set)
在set基礎上,加一個score值,之前是k1 v1 v2 v3
現在zset是k1 score1 v1 score2 v2
1,zadd/zrange
zadd:
zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5//添加數據60分的v1人,70分的v2人。。
zrange:
查詢
zrange zset01 0 -1
帶key查詢
zrange zset01 0 -1 withscores
2,zrangebyscore
按範圍查詢
zrangebyscore key 開始score 結束score (空 、(不包含、withscores、Limit作用是返回限制)
範例:zrangebyscore zset01 60 (90
大於等於60,小於90
範例:zrangebyscore zset01 60 90 limit 2 2//返回結果集中,從2開始截取2個,相當於分頁
3,zrem
刪除元素
zrem key 某score下對應的value值
4,zcard/zcount key score區間/zrank key values值,作用是獲得下標值/zscore key 對應值,獲得分數
zcard:獲取個數
zcount :統計區間個數
zrank :獲取下標
zscore :獲取分數
5,zrevrank key values值
逆序獲得下標值
6,zrevrange
逆序查詢