redis入門基礎(chǔ)
- 環(huán)境: centos
一、安裝
sudo su
cd
wget http://labfile.oss.aliyuncs.com/courses/106/redis-2.8.4.tar.gz
tar -xzvf redis-2.8.4.tar.gz
cd redis-2.8.4
make
幾個(gè)文件:
- 服務(wù)端:src/redis-server
- 客戶端:src/redis-cli
- 默認(rèn)配置文件:redis.conf
# 設(shè)置環(huán)境變量
cp redis-server /usr/local/bin/
cp redis-cli /usr/local/bin/
# 運(yùn)行測試
cd /root/redis-2.8.4
make test
# 啟動redis-server
redis-server
二、服務(wù)命令
- 使用服務(wù)啟動redis服務(wù):
sudo service reids-server start - 查看redis狀態(tài) :
ps -ef | grep redis,netstat -nlt|grep 6379 - redis-cli 交互環(huán)境亂碼:
redis-cli --raw
三、數(shù)據(jù)類型
幫助命令
help set # 查看set命令的幫助
1. string
set key value: 創(chuàng)建get key: 索引
$ sudo service redis-server start
$ sudo su
$ cd
$ redis-cli
> set mykey somevalue
> get mykey
加法器
> set counter 100 # 初始化
> incr counter # +1
> incr counter # +1
> incrby counter 50 # +50 自定義計(jì)數(shù)
incr讓value成為一個(gè)整數(shù), 并加法decrdecrby減法
> mset key1 value1 key2 value2 # 批量創(chuàng)建
> mget key1 key2 # 批量索引
2. lists
線性有序
如列表 mylist
# push 操作
> rpush mylist A # 插入元素到尾部
> rpush mylist B
> lpush mylist first # 插入新元素到頭部
> lrange mylist 0 -1 # 索引, 0 是第一個(gè), -1是倒數(shù)第一, -2 是倒數(shù)第二...
# pop 操作, 彈出(刪除)
> rpop mylist # 從右邊彈出一個(gè)元素
> lpop mylist # 從左邊彈出一個(gè)元素
> del mylist # 刪除
list 存在阻塞
3. hashes(散列)
字符串字段和字符串值之間的映射;
> hmset user:1000 username xiaoming birthyear 2019 verfied 1
# 創(chuàng)建一個(gè)多域的hash表
> hget user:1000 username # 獲取指定單域
> hget user:1000 birthyear
> hgetall user:1000 # 獲取key的所有信息
> hincrby user:1000 birthyear 10 # 修改增加了10
4. 無序集合 set
不允許寶行相同的成員的屬性(非常方便去重);
以O(shè)(1)時(shí)間復(fù)雜度完成添加刪除及測試元素是否存在
> sadd myset 1 2 3 # 創(chuàng)建一個(gè)無序集合myset
> sismember myset # 查看集合是否存在, 成功1,失敗0
5. 有序集合
無重復(fù)元素的字符串集合, 不同之處是有序集合每個(gè)成員都關(guān)聯(lián)了一個(gè)權(quán)值;
成員唯一, 但權(quán)值可重
> zadd hackers 1990 "a"
> zadd hackers 1995 "df"
> zadd hackers 1900 "ddz"
> zrange hackers 0 -1 # 查看
> zreverange hackers 0 -1 # 反序查看
> zrange hackers 0 -1 withscores # 返回記錄值
四、常用命令
- exists and del
exists key: 判斷 key是否存在 存在1, 否0;del key: 刪除key, 成功1,失敗0(key不存在)
- type and keys
type key: 返回元素?cái)?shù)據(jù)類型(string,list, set, zset,hash)keys key-pattern: 返回匹配key的列表, 如 keys ming* (返回以ming開頭的keys)
- randomkey and clear
randomkey: 隨機(jī)獲取一個(gè)已存在的keyclear: 清除界面
- rename and renamenx
raname oldname newname: 重命名; newname存在則會覆蓋renamenx oldname newname: 重命名; newname存在則失敗
- dbsize
dbsize: 返回key總數(shù)
五、時(shí)間相關(guān)命令
- 限定key生存時(shí)間
expire key seconds
- 查詢key剩余生存空間
ttl key
- 清除key
flushdb: 清空當(dāng)前庫中的所有鍵flushall: 清空所有庫中的所有鍵
六、設(shè)置相關(guān)命令
redis配置文件
config get: 讀取運(yùn)行的redis服務(wù)器的配置參數(shù)config set: 更改
如:
config get requirepass # 查看密碼
config set requirepass 123456 # 設(shè)置密碼位123456
auth 123456 # 認(rèn)證密碼
config get * # 查看所有(匹配)
config resetstat充值數(shù)據(jù)統(tǒng)計(jì)報(bào)告
七、查詢信息
info [section]: 查詢r(jià)edis相關(guān)信息
[section]
server # Redis server 的常規(guī)信息
clients # Client 的連接選項(xiàng)
memory # 存儲占用相關(guān)信息
persistence # RDB and AOF 相關(guān)信息
stats # 常規(guī)統(tǒng)計(jì)
replication # Master/Slave 請求信息
cpu # CPU 占用信息統(tǒng)計(jì)
cluster # Redis 集群信息
keyspace # 數(shù)據(jù)庫信息統(tǒng)計(jì)
all # 返回所有信息
default # 返回常規(guī)設(shè)置信息
八、安全
密碼配置文件 redis.conf
$ sudo service redis-server restart # 重啟
- 密碼認(rèn)證(登錄)
$ redis-cli
> auth 密碼
或
$redis-cli -a 密碼
九、主從復(fù)制
分擔(dān)服務(wù)器壓力, 部署多臺服務(wù)器,, 分別用于緩存的讀和寫,
用于寫的為主服務(wù)器, 讀的為從服務(wù)器;
建立主從關(guān)系:
# slave 端執(zhí)行命令
# slaveof ipaddress:port
> slaveof 127.0.0.1:6379
# 如何master服務(wù)器設(shè)置了密碼,則需要在從服務(wù)器中設(shè)置好密碼
> config set masterauth <password>
十、事務(wù)處理
當(dāng)client 發(fā)送multi命令后進(jìn)入事務(wù), 后續(xù)命令不會執(zhí)行, 而是存放到隊(duì)列中, 執(zhí)行exec后 redis按順序執(zhí)行隊(duì)列中的命令;
(實(shí)際中不能依賴redis事務(wù)保證數(shù)據(jù)一致性)
> multi
> set name a
> set name b
> exec
> get name
十一、持久化機(jī)制
將內(nèi)存中的數(shù)據(jù)長久存到磁盤中;
兩種方式:
- snapshotting (快照), 將數(shù)據(jù)存到文件里;
save 900 1: 900s內(nèi)如果超過1個(gè)key被修改, 則發(fā)起快照保存
- Append-only file (aof), 將讀寫操作放到文件中;
# 配置文件
appendonly yes //啟用 aof 持久化方式
# appendfsync always //收到寫命令就立即寫入磁盤,最慢,但是保證了數(shù)據(jù)的完整持久化
appendfsync everysec //每秒鐘寫入磁盤一次,在性能和持久化方面做了很好的折中
# appendfsync no //完全依賴 os,性能最好,持久化沒有保證
虛擬內(nèi)存, 在2.6以上版本取消了(在后面的版本由redis自身管理)

浙公網(wǎng)安備 33010602011771號