一、redis
redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,所以就算服務器重啟,redis的數據也不會丟失,並且在此基礎上實現了master-slave(主從)同步。
Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部 分場合可以對關系數據庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便,Redis支持主從同步。數據可以從主服務器向任意數量的從服務器上同步,從服務器可以是關聯其他從服務器的主服務器。這使得Redis可執行單層樹復制。從盤可以有意無意的對數據進行寫操作。由於完全實現了發布/訂閱機制,使得從數據庫在任何地方同步樹時,可訂閱一個頻道並接收主服務器完整的消息發布記錄。
二、redis安裝
centos:
$ wget http://download.redis.io/releases/redis-4.0.2.tar.gz $ tar xzf redis-4.0.2.tar.gz $ cd redis-4.0.2 $ make $ src/redis-server $ src/redis-cli redis> set foo bar OK redis> get foo "bar"
[yiibai@ubuntu:~]$ redis-server
[2988] 07 Feb 17:09:42.485 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
[2988] 07 Feb 17:09:42.488 # Unable to set the max number of files limit to 10032 (Operation not permitted), setting the max clients configuration to 3984.
[2988] 07 Feb 17:09:42.490 # Warning: 32 bit instance detected but no memory lim
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 2.8.4 (00000000/0) 32 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in stand alone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 2988
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[2988] 07 Feb 17:09:42.581 # Server started, Redis version 2.8.4
[2988] 07 Feb 17:09:42.582 * The server is now ready to accept connections on po
三、redis配置
配置文件位置:安裝目錄下/redis.conf
redis 127.0.0.1:6379> CONFIG GET * 1) "dbfilename" 2) "dump.rdb" 3) "requirepass" 4) "" 5) "masterauth" 6) "" 7) "unixsocket" 8) "" 9) "logfile" 10) "/var/log/redis/redis-server.log" 11) "pidfile" 12) "/var/run/redis/redis-server.pid" 13) "maxmemory" 14) "3221225472" 15) "maxmemory-samples" 16) "3" 17) "timeout" 18) "0" 19) "tcp-keepalive" 20) "0" 21) "auto-aof-rewrite-percentage" 22) "100" 23) "auto-aof-rewrite-min-size" 24) "67108864" 25) "hash-max-ziplist-entries" 26) "512" 27) "hash-max-ziplist-value" 28) "64" 29) "list-max-ziplist-entries" 30) "512" 31) "list-max-ziplist-value" 32) "64" 33) "set-max-intset-entries" 34) "512" 35) "zset-max-ziplist-entries" 36) "128" 37) "zset-max-ziplist-value" 38) "64" 39) "lua-time-limit" 40) "5000" 41) "slowlog-log-slower-than" 42) "10000" 43) "slowlog-max-len" 44) "128" 45) "port" 46) "6379" 47) "databases" 48) "16" 49) "repl-ping-slave-period" 50) "10" 51) "repl-timeout" 52) "60" 53) "repl-backlog-size" 54) "1048576" 55) "repl-backlog-ttl" 56) "3600" 57) "maxclients" 58) "3984" 59) "watchdog-period" 60) "0" 61) "slave-priority" 62) "100" 63) "min-slaves-to-write" 64) "0" 65) "min-slaves-max-lag" 66) "10" 67) "hz" 68) "10" 69) "no-appendfsync-on-rewrite" 70) "no" 71) "slave-serve-stale-data" 72) "yes" 73) "slave-read-only" 74) "yes" 75) "stop-writes-on-bgsave-error" 76) "yes" 77) "daemonize" 78) "yes" 79) "rdbcompression" 80) "yes" 81) "rdbchecksum" 82) "yes" 83) "activerehashing" 84) "yes" 85) "repl-disable-tcp-nodelay" 86) "no" 87) "aof-rewrite-incremental-fsync" 88) "yes" 89) "appendonly" 90) "no" 91) "dir" 92) "/var/lib/redis" 93) "maxmemory-policy" 94) "noeviction" 95) "appendfsync" 96) "everysec" 97) "save" 98) "900 1 300 10 60 10000" 99) "loglevel" 100) "notice" 101) "client-output-buffer-limit" 102) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60" 103) "unixsocketperm" 104) "0" 105) "slaveof" 106) "" 107) "notify-keyspace-events" 108) "" 109) "bind" 110) "127.0.0.1"
原來是redis默認只能localhost登錄,所以需要開啟遠程登錄。解決方法如下:
在redis的配置文件redis.conf中,找到bind localhost/127.0.0.1注釋掉。
注釋掉本機,局域網內的所有計算機都能訪問。
band localhost 只能本機訪問,局域網內計算機不能訪問。
保護模式:
找到protected-mode yes 改為no
守護進程:
daemonize no
四:redis啟動
./redis-server redis.conf
