Redis基本知識

Redis

今回はRedis基本知識を紹介します。

Redisとは

RedisはRemote Dictionary Serverの略です。
RedisはBSDライセンスの条件の下で開発され、Key-Value型のNoSQLデータベースです。
RedisはC言語で書かれております。

Redisデータ構造

string
list
set
zset
hash

ポート

Redis の デフォルトのポートは 6379 番です。

Windowsにインストール

Redis自体はWindows環境をサポートしていないため、MSOpenTeckを利用してインストールする。

サイトからZIPファイルをダウンロードし、Windowsに好きなフォルダに入れる。

指定したフォルダに解凍し、以下のようになります。

サーバ起動

redis-server.exe

サーバにアクセス

redis-cli.exe

Linuxにインストール

EC2(amazonlinux)の場合

amazon-linux-extras list | grep redis
amazon-linux-extras install -y redis6

インストール先

cd /usr/bin
ls | grep redis
結果:
redis-benchmark
redis-check-aof
redis-check-rdb
redis-cli
redis-sentinel
redis-server

プロパティディレクトリ

/etc/redis

起動

systemctl start redis
systemctl status redis

クライアントでサーバに接続

redis-cli

redis無効化

amazon-linux-extras disable redis6

Redisソースでインストール

RedisからRedisファイルをダウンロードし、指定のフォルダに解凍する

wget https://download.redis.io/releases/redis-6.2.4.tar.gz
tar -zxf redis-6.2.4.tar.gz
cd redis-6.2.4/
make && make PREFIX=/usr/local/redis install
cd /usr/local/redis

プロパティをredisに入れる

mkdir /usr/local/redis/etc
cp redis.conf /usr/local/redis/etc

起動

redis.confの設定値を変更する

daemonize on → yes
起動
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

起動確認
netstat -tunpl | grep 6379
ps -ef | grep redis

redis停止

pkill redis

リモートアクセス

vi redis.conf
bind=0.0.0.0

データ操作

Key関連操作

すべてキー取得
Keys *

指定のキー名が存在するかチェック(0:存在しない 1:存在)
exists key_name

キーの数
dbsize

データベース変更
select 1 

選択したデータベースのキー全部削除
flushdb

全部削除
flushdb all

string関連操作

set key value [ex 秒]/px ミリ秒 [nx]/[xx]    
// nx:キーが存在したら、エラー。
// xx:キーが存在したら、更新。デフォルト値
set id 100 //有効期限なし
mset key value key value // 複数key-valueを設定
ttl id //有効期限検索 -1:有効期限なし
type id  // 値のデータ型確認
expire key 300 //有効期限設定(秒)
get key  //キーの値を取得
mget key key // 複数のキーの値を取得
//インクリメント
incr  key
decr key
incrby key step
decrby key  step
append key value //追加
get aa           //”100–test”
getset aa 999   //”100–test”
get aa               // “999”

list関連操作

lpush key value
rpop key
llen key
lrange key 0 2
lrange key 0 -1 //全部取得
lrange key -2 -1       // 最後の2個 
rpush key value
lpop
rpoplpush key newkey   // keyからデータ取得newkeyに設定

hash関連操作

テーブルの1レコードの内容を保存する。
keyはテーブル名:主キー:idで設定する方が良い。

hset key field value   //一つ項目設定
hget key field
del key  //削除
hdel key field //指定の項目削除
hlen key //field数取得
hexists key field  // 項目存在かチェック
hmset key field value [field value]  // 複数項目設定
hmget key field [field]
hgetall key   //全部取得
hincrby key field 1
hkeys key
hvals key

set関連操作

setは重複のデータを保存できない。

sadd key value1 value2   // データ追加
smembers key  //key のデータ取得(全部)
scard key // 個数取得
srem key value1  //指定のデータ削除
spop key    //任意のデータ削除
sismember key value  //指定のデータが存在か
smove sSet nSet value  // 指定のvalueをsSetからnSetに移動
sinter key1 key2  //key1,key2に同じ値を取得

sunion key1 key2   //key1,key2にすべて値を取得

sdiff key1 key2  //key1からkey2に存在しない値を取得

zset関連操作

zadd key score value  // score :数値
zrem key value   // 削除
zrange key start end  [withscores]  // 大→小
zrevrange key start end [withscores] // 小→大

zrange key 0 -1 // 全部取得
zremrangebyscore key min max  //score により削除
zcard key   // 個数
zcount key minscore maxscore  // score 範囲内

zscore key value
zincrby key score value  

pub/sub機能

subscribe channel
psubscribe ss*
publish channel value

データ永続化

rdb(デフォルトON)

Redisでは特定の時点のスナップショットをRDBファイルとして保存することができます。RDBはデータベースのダンプファイルに相当します。

vi /etd/redis/redis.conf

#           秒    コマンド数
save 900 1        # 1回の更新後 900 秒以内に同期する
save 300 10      # 10回の更新後 300 秒以内に同期する
save 60 10000  # 10,000回の更新後 60 秒以内に同期する

dbfilename dump.rdb    # RDBのファイル名を指定する
rdbcompression yes      # RDBの圧縮要否を指定する
dir ./                              # RDB/AOFの格納ディレクトリを指定する

aof(手動)

AOFはデータベースのWAL/REDOログに似た書き込みログで、すべての書き込みコマンドが追記で記録されます。

vi /etd/redis/redis.conf

appendonly yes                                 # AOFの利用要否を指定する
appendfilename “appendonly.aof”  # デフォルトは appendonly.aof となる
appendfsync everysec  # デフォルトで秒単位に同期する(中速で動作する)→おすすめ
# appendfsync always  # 常に同期する(低速だが安全に動作する)
# appendfsync no         # OSに任せる(高速に動作する)

auto-aof-rewrite-min-size 32mb
# AOFのファイルサイズが32MByte以下はリビルド(最適化)の対象外とする

auto-aof-rewrite-percentage 100
# AOFのファイルサイズが倍増(100%)した場合にリビルド(最適化)する

トランザクション

MULTI, EXEC, DISCARD および WATCH は Redis におけるトランザクションの基本です。
watch key1 key2   // key1 key2の値は変更があれば、execで実行失敗となる。
multi         // トランザクション開始
//処理
exec
watch key1 key2   // key1 key2の値は変更があれば、execで実行失敗となる。
multi         // トランザクション開始
//処理
discard                // 実行キャンセル

セキュリティ

アクセスip制限

redis.confファイルにbindで設定されたIPのみアクセスできる。

パスワード

redis.confファイルにrequirepass パスワード

接続

redis-cli 
auth パスワード

レプリケーション

 slaveサーバのconf変更

vim /etc/redis/redis.conf
replicaof <masterip> <masterport>
masterauth <master-password>
確認
redis-cli
INFO
タイトルとURLをコピーしました