Redis简介(来自百度百科)
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
Linux中服务搭建
安装,下载,解压,编译:
$ wget http://download.redis.io/releases/redis-3.2.8.tar.gz
$ tar xzf redis-3.2.8.tar.gz
$ cd redis-3.2.8
$ make
编译完成后,会产生六个文件:
redis-server:这个是redis的服务器
redis-cli:这个是redis的客户端
redis-check-aof:这个是检查AOF文件的工具
redis-check-dump:这个是本地数据检查工具
redis-benchmark:性能基准测试工具,安装完后可以测试一下当前Redis的性能
redis-sentinel:Redis监控工具,集群管理工具
二进制文件是编译完成后在src目录下,通过下面的命令启动Redis服务:
$ src/redis-server
可以使用内置的客户端命令redis-cli进行使用:
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
“bar”
Windows中服务搭建
下载地址:https://github.com/dmajkic/redis/downloads
可以选择自己想要的版本进行下载,我在这就下载 redis-2.4.5-win32-win64.zip进行说明,里面包括的32位与64位的,我使用64位的。我把: 64bit下的文件都拷贝到 D:\ProgramFiles\redis-2.4.5 目录下
命令步骤:
1.打开一个cmd窗口;
2.使用cd命令切换到指定目录: D:\ProgramFiles\redis-2.4.5
3.运行Rides服务,执行: redis-server.exe redis.conf
如此,则说明Redis服务端已经安装成功。
验证与使用,命令步骤:
1.重新打开一个cmd窗口;
2.使用cd命令切换到指定目录: D:\ProgramFiles\redis-2.4.5
3.执行: redis-cli.exe -h 127.0.0.1 -p 6379 (其中 127.0.0.1是本地ip,6379是redis服务端的默认端口)
4.执行:set key “hello world”
5.执行:get key
6.执行:del key
7.执行:get key
测试成功!
配置文件说明
配置文件说明:
- #是否以后台守护进程运行,默认为no, 取值yes, no
- daemonize no
- #pid文件存放路径
- pidfile /var/run/redis.pid
- #配置redis端口,默认6379
- port 6379
- #绑定ip。默认绑定所有本机ip,一般用在服务器多ip下,可以只监听内网服务器ip,保证服务安全
- bind 127.0.0.1
- #sock文件
- unixsocket /tmp/redis.sock
- #客户端超时时间,单位秒
- timeout 300
- #log级别,支持四个级别,debug,notice,verbose,warning
- loglevel verbose
- #log文件路径
- logfile
- #log输出到标准设备,logs不写文件,输出到空设备,/deb/null
- logfile stdout
- #保存快照的频率,在多长时间内执行一定数量的写操作时,保存快照的频率,可以设置多个条件。如果都注释掉,则不做内存数据持久化。如果只是把redis只用作cache,不开启持久化功能
- save <seconds> <changes>
- save 900 1
- #是否使用压缩
- rdbcompression
- #快照数据库名称
- dbfilename
- #数据库存放路径
- dir
- #redis主从 做法 在从上填上主的IP和端口号 主上不用做任何设置
- slaveof <masterip> <masterport>
- #主库服务器口令,如果主服务器未打开requirepass,则不需要此项
- masterauth <master-password>
- #在master服务器挂掉或者同步失败时,从服务器是否继续提供服务
- slave-serve-stale-data yes
- #设置redis服务密码,如果开启,则客户端连接时需要 -a 指定密码,否则操作会提示无权限
- requirepass foobared
- #命令改名,相当于linux alias,可以用改功能屏蔽一些危险命令
- rename-command
- #最大连接数;0 表示不限制
- maxclients 128
- #最大使用内存(分配的内存),推荐生产环境下做相应调整,我们用的是只用来做高速缓存,限制2G。默认情况下,redis会占用可用的所有内存
- maxmemory <bytes>
- #过期策略,提供六种策略
- maxmemory-policy volatile-lru
- volatile-lru //删除过期和lru 的key(默认值)
- allkeys-lru //删除lru算法的key
- volatile-random //随机删除即将过期key
- allkeys->random //随机删除
- volatile-ttl //删除即将过期的
- noeviction //永不过期,返回错误
- #是否开启appendonlylog,开启的话每次写操作会记一条log。相当于mysql的binlog;不同的是,每次redis启动都会读此文件构建完整数据。即使删除rdb文件,数据也是安全的
- appendonly
- #日志文件的名称,默认appendonly.aof
- appendfilename appendonly.aof
- #异步写append file 的策略。类似mysql事物log写方式。三种
- appendfsync
- appendfsync always //同步,每次写都要flush到磁盘,安全,速度慢。
- appendfsync everysec //每秒写(默认值,推荐值)同mysql
- appendfsync no //交给操作系统去做flush的动作
- #虚拟内存开关
- vm-enabled no
- #swap文件,不同redis swap文件不能共享。而且生产环境下,不建议放在tmp目录
- vm-swap-file /tmp/redis.swap
- #vm大小限制。0:不限制,建议60-80% 可用内存大小
- vm-max-memory 0
- #根据缓存内容大小调整,默认32字节
- vm-page-size 32
- #page数。每 8 page,会占用1字节内存。vm-page-size * vm-pages 等于 swap 文件大小
- vm-pages 134217728
- #vm 最大io线程数。注意: 0 标志禁止使用vm
- vm-max-threads 4