介紹
Redis是一個開源(BSD許可),內存存儲的數據結構服務器,可用做數據庫,高速緩存和消息隊列代理。它支持字符串、哈希表、列表、集合、有序集合,位圖,hyperloglogs等數據類型。內置複製、Lua腳本、LRU收回、事務以及不一樣級別磁盤持久化功能,同時經過Redis Sentinel提供高可用,經過Redis Cluster提供自動分區
redis的優勢是:
異常快 - Redis很是快,每秒可執行大約110000次的設置(SET)操做,每秒大約可執行81000次的讀取/獲取(GET)操做。
支持豐富的數據類型 - Redis支持開發人員經常使用的大多數數據類型,例如列表,集合,排序集和散列等等。這使得Redis很容易被用來解決各類問題,由於咱們知道哪些問題能夠更好使用地哪些數據類型來處理解決。
操做具備原子性 - 全部Redis操做都是原子操做,這確保若是兩個客戶端併發訪問,Redis服務器能接收更新的值。
多實用工具 - Redis是一個多實用工具,可用於多種用例,如:緩存,消息隊列(Redis本地支持發佈/訂閱),應用程序中的任何短時間數據,例如,web應用程序中的會話,網頁命中計數等。
安裝
1 yum方式
yum install epel-release # 安裝epel-release庫
yum install redis # 安裝redis
systemctl start redis [centos7下] /etc/rc.d/init.d/redis start [centos6下]
redis-server /etc/redis.conf # 帶配置文件啓動
vim /etc/redis.conf
bind 127.0.0.1 改成 bind 0.0.0.0 # 開啓遠程訪問
requirepass yourpasswd # 設置訪問密碼
redis-cli -h host -p port -a password # 客戶端訪問
推薦使用桌面工具Redis Desktop Manager
下載地址爲:https://redisdesktop.com/download
2 源碼安裝
yum group install "Development Tools"
wget http://download.redis.io/releases/redis-3.0.3.tar.gz
tar zxf redis-3.0.3.tar.gz
cd redis-3.0.3
make
make install
cd utils/
./install_server.sh
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
redis.conf requirepass 修改密碼
cd src/
./redis-server # 啓動
./redis-cli -p 6379 -a passwd # 客戶端登錄
redis簡單命令
1 檢測是否在工做
127.0.0.1:6379> ping
PONG
2 獲取配置
語法格式:CONFIG GET CONFIG_SETTING_NAME
127.0.0.1:6379> config get * # 獲取全部配置
1) "dbfilename"
2) "dump.rdb"
....
3 編輯配置
語法格式:CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
127.0.0.1:6379>
4 數據類型
a 字符串 Redis中的字符串是一個字節序列
127.0.0.1:6379> set name 'lyon'
OK
127.0.0.1:6379> get name
"lyon"
b 散列/哈希 Redis散列/哈希(Hashes)是鍵值對的集合。Redis散列/哈希是字符串字段和 字符串值之間的映射。所以,它們用於表示對象。
HMSET ukey username "lyon" password "123" points 200
c Redis列表是字符串列表,按插入順序排序。
127.0.0.1:6379> lpush mylist memcached
(integer) 1
127.0.0.1:6379> lpush mylist redis
(integer) 2
127.0.0.1:6379> lpush mylist mongodb
(integer) 3
127.0.0.1:6379> lpush mylist sqlite
(integer) 4
127.0.0.1:6379> lrange mylist 0 5
1) "sqlite"
2) "mongodb"
3) "redis"
4) "memcached"
d 集合
Redis集合是字符串的無序集合,集合具備惟一屬性
127.0.0.1:6379> sadd list2 memcached
(integer) 1
127.0.0.1:6379> sadd list2 redis
(integer) 1
127.0.0.1:6379> sadd list2 redis
(integer) 0
127.0.0.1:6379> smembers list2
1) "redis"
2) "memcached"
e 可排序集合
Redis可排序集合相似於Redis集合,是不重複的字符集合。 不一樣之處在於,排序集合的每一個成員都與分數相關聯,這個分數用於按最小分數到最大分數來排序的排序集合。雖然成員是惟一的,但分數值能夠重複。
127.0.0.1:6379> zadd myset 1 redis
(integer) 1
127.0.0.1:6379> zadd myset 2 memcached
(integer) 1
127.0.0.1:6379> zadd myset 2 memcached
(integer) 0
127.0.0.1:6379> ZRANGEBYSCORE myset 0 100
1) "redis"
2) "memcached"