首頁 > 資料庫 > Redis > redis怎麼用的

redis怎麼用的

silencement
發布: 2022-06-07 14:58:30
原創
2415 人瀏覽過

本文將介紹redis的基本用法。

redis怎麼用的

一、Redis基礎部分: 

redis適用場合

1.取最新N個資料的操作

2.排行榜應用程式,取TOP N 操作

#3.需要精確設定過期時間的應用

4.計數器應用

5.Uniq操作,取得某段時間所有資料排重值

6.即時系統,反垃圾系統

7.Pub/Sub建置即時訊息系統

8.建置佇列系統

#9.快取

SET操作每秒鐘110000 次, GET操作每秒鐘81000 次,伺服器設定如下:

Linux 2.6, Xeon X3320 2.5Ghz.

stackoverflow 網站使用Redis 做為快取伺服器。

同時也會將資料寫到硬碟上。所以資料是安全的(除突然斷電外,重啟服務會寫到dump.rdb檔案)

#1)安裝: 

tar zxvf redis-2.6.9.tar.gz
cd redis-2.6.9
make
cd src && make install
登入後複製

2)移動設定檔位置(為了方便管理)

cd /usr/local/
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc
mv /lamp/redis-2.6.9/redis.conf /usr/local/redis/etc
cd /lamp/redis-2.6.9/src
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
登入後複製

3)修改設定檔 

vi /usr/local/redis/etc/redis.conf
登入後複製

#將daemonize no 中no改為yes[yes指後台運行]

4)啟動/隨機啟動:

cd /usr/local/redis/bin
./redis-server /usr/local/redis/etc/redis.conf#启动redis并指定配置文件。
#vi /etc/rc.local #设置随机启动。
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
登入後複製

5)查看是否啟動成功 

ps -ef | grep redis
netstat -tunpl | grep 6379#查看端口是否占用。
登入後複製

6)進入客戶/退出 

cd /usr/local/redis/bin
./redis-cli#进入
quit#退出
登入後複製

7)關閉redis  

pkill redis-server#关闭
./redis-cli shutdown#关闭
登入後複製

Redis安全性

Redis的安全性???(由以下4種方式)

1.用ACL控制器安全性。

2.在redis.conf設定檔增加下面這一行設定,即可把redis綁定在單一介面上(但並不是只有接受這個網路卡的資料)。

bind 127.0.0.1

3.為redis加上較長密碼(無需要記住)

4.在redis .conf配置啟用認證功能。

5.SSL代理

6.停用指定指令。

Redis設定

daemonize    若需要在背景執行,把該項目改為yes  

#pidfile      設定多個pid的位址預設在/var/run/redis.pid

bind 綁定ip,設定後只接受來自該ip的請求

# port 監聽埠,預設為6379

timeout      設定客戶端連線時的逾時時間,單位為秒

loglevel      分為4級,debug、分音、notice、 warning

logfile      設定log檔案位址

databases    設定資料庫的數量,預設使用的資料庫為0

save         設定redis進行資料庫鏡像的頻率

rdbcompression    在進行鏡像備份時,是否進行壓縮

Dbfilename        鏡像備份檔案的檔案名稱

Dir   資料庫鏡像備份的檔案放置路徑

Slaveof     設定資料庫為其他資料庫的從資料庫

##Masterauth 主資料庫連線所需的密碼驗證


Requirepass     設定登入時需要使用的密碼


Maxclients 限制同時連線的客戶數量


Maxmemory 設定redis能夠使用的最大記憶體


#Maxmemory 設定redis能夠使用的最大記憶體

# Appendonly 開啟append only模式


以下了解即可:


Appendfsync 設定對appendonly.aof檔案同步的頻率

#vm-enabled 是否開啟虛擬記憶體支援

##vm-swap-file 設定虛擬記憶體的交換檔路徑


vm-max-memory 設定redis所使用的最大實體記憶體大小

vm-page-size 設定虛擬記憶體的頁大小

vm-pages 設定交換檔案的總的page數量

vm-max -threads 設定VM IO同時使用的執行緒數量

Glueoutputbuf 把小的輸出快取存放在一起

hash-max-zipmap-entries 設定hash的臨界值

Activerehashing重新hash

5種資料型別:字串、雜湊、鍊錶、集合、有序集合。

支援:push/pop、add/remove 、取交集、並集、差集、排序。

redis<===同步====>mysql

同時也會將資料寫到硬碟上。所以資料是安全的(除突然斷電外,重啟服務會寫到dump.rdb檔案)

select num#選擇函式庫,預設在0庫,共16個函式庫

# auth liweijie#授權使用者所需密碼(密碼就是redis.conf中配置的密碼)

flushdb#清空資料庫。

String(字串)類型: 

set name lijie#設定鍵name的值為lijie

get name#取得name的值。

keys *#查詢所有的鍵。

setnx name liweijie#如果鍵已存在則回傳0,不更新,防止覆蓋。

setex haircolor 10 red #設定鍵的值的有效期限為10秒。

setrange email 6 lampbre.com#替換鍵的值從第6個字元開始換成lampbre.com

mset name1 李大偉 name2 李小威#設定多個鍵的值。

###msetnxname1 張三 name3 李四#判斷鍵是否存在,不存在則設定,否則不設定回傳0###

mget name1 name2 name3#一次取得多個鍵的值。

getset name1 Tom#重新設定鍵的值,並傳回舊的鍵值。

getrange email 6 18#截取email鍵的值,從第6-18位元間的字元。

incr uid#每次自增1 (如果key中uid不存在,則設​​定並從0開始,下同)

incrby uid 5#每次自增5 

#incrby uid -5#每次自減5 

decr uid #每次自減1

decrby uid 5#每次自減5

appendname1 @ 126.com#給name1的值,加字串@126.com

strlenname1#傳回鍵name1的值的長度。

Hashes(雜湊)類型: 

hset user:001 name liweijie#雜湊設定使用者user:001的name鍵值為liweijie

hset user :001 age 21#相同,增加一個age鍵值為21

hsetnx user:001 age 22#同上,但偵測鍵是否存在。若不存在創建。

hmset user:002 name liweijie2 age 26 sex 1#同時設定多個鍵的值。

hget user:001 name#哈希取得使用者user:001的name鍵的值。

hget user:001 age #同上。

hmget user:001 name age sex#取得多個指定的鍵的值。

hgetall user:001#取得所有鍵的值。

hincrbyuser:001 age -8#在指定鍵上加上給定的值。

hexists user:001 sex#偵測指定的鍵值是否存在。

hlen user:001#傳回指定雜湊的鍵個數/字段數。

hdel user:001 sex#刪除指定(user:001)雜湊的指定欄位或是鍵值。

hkeys user:003#傳回雜湊裡所有欄位或是鍵值。

Lists(鍊錶)類型及操作(棧或佇列): 

lpush mylist "world"#從頭部插入字串

lpush mylist "hello "#同上

lrange mylist 0 -1#取得從0到最後一個如[1) "hello" 2) "world"]

rpush mylist "jiejie "#在尾部插入

linsert mylist before "hello" "this is linsert" #指定插入位置(在hello之前插入)。

lset mylist 0 "what"#設定修改指定下標的值。

lrem mylist 1 "hello"#刪除(1個)一個值為hello的元素。 (n<0從尾部刪除,n=0全部刪除)

ltrim mylist 1 2 #保留表中下標為1/2的元素。

lpop mylist#彈出開頭元素並返回。

rpop mylist#彈出尾部元素並返回。

rpoplpush mylist mylist2 #從mylist尾部彈出插入到mylist2的頭部。

lindex mylist 0#取得表格下標示為0的元素值。

llen mylist#傳回表格元素個數(相當於count($arr  ))。

sets(集合)類型及操作(好友推薦、blog、tag功能): 

#smembers myset#查看myset集合中所有元素值。

sadd myset "hello"#在mysets集合中新增一個值hello

srem myset "hello"#刪除myset集合中名稱為hello的元素。

spop myset #隨機彈出並傳回mysets中的一個元素。

sdiff myset2 myset3#傳回myset2中的與myset3的差集(以myset2為準)。

sdiffstore myset4 myset2 myset3#返回myset2中的與myset3的差集,並存入myset4中去。

sinter myset2 myset3#傳回myset2與myset3的交集。

sinterstore myset5 myset2 myset3#返回myset2與myset3的交集,並存入myset5中去。

sunion myset2 myset3#求並集(去重複)

sunionstore myset6 myset2 myset3#求並集,並存入myset6中。

smove myset2 myset3 "three"#將myset2中的three移到myset3中去。

scard myset2#傳回元素個數。

sismember myset2 "one"#判斷元素one是不是myset2集合的(相當於is_array())。

srandmember myset2#隨機傳回myset2集合中的一個元素,但不刪除(相當於array_rand())。

sorted sets(有序集合)類型及操作(以scores排序): 

zadd myzset 1 "one"#向順序1的新增元素one

#zadd myzset 2 "two"#同上。

zadd myzset 3 "two"#相當於更新順序為2的值

zrange myzset 0 -1 withscores#查看所有元素並帶上排序(預設升序)。

zrem myzset "two"#刪除two

zincrby myzset 2 "two"#將two的順序值加上2

zrank myzset "two"#傳回集合中元素的索引下標值。

zrevrank myzset two#元素反轉並傳回新下標值。

zrevrange myzset 0 -1 withscores#依序反轉(相當於降序排序)

zrangebyscore myzset 1 10 withscores#回傳順序為1-10的元素(可做分頁)。

zcount myzset 1 10 #傳回順序在1-10之間元素的個數。

zcard myzset#傳回集合中所有元素的個數。

zremrangebyrank myzset 1 2#刪除集合中下標為1到2的元素。

zremrangebyscore myzset 1 10#刪除集合中順序為1到10的元素。

Redis常用指令  

鍵/值相關指令。

keys * #查詢所有

keys user*#查詢指定的

exists user:001#判斷是否存在。

del name#刪除指定的鍵。

expire addr 10#设置过期时间

ttl addr#查询过期时间

select 0 #选择数据库

move age 1#将age移到1数据库。

get age #获取

persist age#移除age的过期时间。

randomkey#随机返回一个key

rename name1 name2#重命名键

type myset#返回键的类型。

ping #测试redis连接是否存活。

echo lamp#输出一个lamp

select 10#选择数据库。

quit/exit/crtl+C#退出客户端

dbsize#返回库里的键的个数。

服务器相关命令:

info#显示redis服务器的相关信息。

config get */loglevel #返回所有/指定的配置信息。

flushdb#删除当前库中的所有键/表。

flushall#删除所有数据库中的所有键/表

二、Redis高级部分:

1、Redis安全性:

1.用ACL控制器安全性。

2.给redis加上较长密码

# requirepass foobared

requirepass beijing

3.在redis.conf配置启用认证功能。

方式一:Auth beijing

方式二:./redis-cli -a beijing

4.在redis.conf配置文件增加下面这一行配置,即可把redis绑定在单个接口上(但并不是只有接受这个网卡的数据)。

bind 127.0.0.1(单台机器的时候可以配置,分布式或主从复制时最好不要配置)

5.SSL代理

6.禁用指定命令。

2、Redis主从复制:

redis只需在从服务器(slave)上配置即可:

slaveof 211.122.11.11 6379 #指定master 的ip 和端口

masterauth beijing#这是master主机的密码

Info#查看主/从服务器的状态。

3、Redis事务处理:

Redis事务很不完善。

4、Redis持久化机制:

方式一、备份数据到磁盘(快照)[ snapshotting(快照)也是默认方式]

记录操作命令[ Append-only file(缩写aof)的方式]

备份数据到磁盘(快照)[ snapshotting(快照)也是默认方式]

save 900 1 #900秒内如果超过1个key被修改,则发起快照保存
save 300 10 #300秒内容如超过10个key被修改,则发起快照保存
save 60 10000
登入後複製

方式二、记录操作命令[ Append-only file(缩写aof)的方式](较安全持久化)

appendonly yes #启用aof 持久化方式 
# appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化 
appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
登入後複製

以上是redis怎麼用的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板