学习redis

手动迁移原创博客,原文发表于http://blog.itpub.net/20777547/viewspace-1355253/


一.安装

操作系统:rhel 6.2 64

 

网上下了一个当前的稳定版:http://download.redis.io/releases/redis-2.8.17.tar.gz

 

1.准备相关的包:

 

我是最小化安装的操作系统,所以要正常通过编译还需要安装以下的软件包:gcc,make,tcl

 

2.编译及安装


 tar zxvf redis-2.8.17.tar.gz 

cd redis-2.8.17/src/ 

make

make install 

在/usr/local里面新建一个目录,把redis相关的都copy过去

 mkdir -p /usr/local/redis

cp redis-2.8.17/src/* /usr/local/redis/

cp redis-2.8.17/redis.conf /usr/local/redis/ 

二.日常操作

 

1.启动及关闭

 

a.修改配置文件redis.conf,让redis后台启动

 # By default Redis does not run as a daemon. Use 'yes' if you need it.

# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.

daemonize yes 

b. 启动 redis 的时候需要制定配置文件

redis-server /usr/local/redis/redis.conf 

c. 关闭 redis

redis-cli shutdown 

2.使用redis

 

一般情况下直接使用redis-cli命令就可以操作redis了,不加任何参数默认就是连接本机的6379端口的redis

 

a.set和get

 127.0.0.1:6379> set name paololiu

OK

127.0.0.1:6379> get name

"paololiu" 

b.keys 命令可以通过通配符查询数据库中匹配的 key ,和 linux 的通配符一样可以用 * ,也可以用 ? ,还可以用正则表达式的方式

 keys *

keys pao?o

keys pa*o

keys p[ab]olo 

c.type 命令可以显示当前 key 的类型: string,list,set,zset,hash

 127.0.0.1:6379> type myhm1

hash 

d. 其他还有很多 redis 的命令,具体的可以查阅: http://redis.readthedocs.org/en/latest/index.html


三.持久化

 

1.RDB

redis是一个内存数据库,但也能将通过快照(RDB)的方式将数据持久化地放到磁盘上。

a.save设置

在redis.conf配置文件中,默认是15分钟内有一个key放生变化,5分钟内10个key发生变化,1分钟内10000个key发生变化会自动save


 ########################## SNAPSHOTTING  ##########################

#

# Save the DB on disk:

#

#   save  

#

#   Will save the DB if both the given number of seconds and the given

#   number of write operations against the DB occurred.

#

#   In the example below the behaviour will be to save:

#   after 900 sec (15 min) if at least 1 key changed

#   after 300 sec (5 min) if at least 10 keys changed

#   after 60 sec if at least 10000 keys changed

#

#   Note: you can disable saving at all commenting all the "save" lines.

#

#   It is also possible to remove all the previously configured save

#   points by adding a save directive with a single empty string argument

#   like in the following example:

#

#   save ""

#“N秒内数据集至少有M个改动”这一条件被满足时,自动保存一次数据集

 

save 900 1

save 300 10

save 60 10000 

b.dump文件

dump文件指的就是之前面说的save的文件。

 # The filename where to dump the DB

#dump文件名

dbfilename dump.rdb

 

# The working directory.

#

# The DB will be written inside this directory, with the filename specified

# above using the 'dbfilename' configuration directive.

#

# The Append Only File will also be created inside this directory.

#

# Note that you must specify a directory here, not a file name.

#这里是相对路径,最好指定一个绝对路径

dir ./

 

 

# Compress string objects using LZF when dump .rdb databases?

# For default that's set to 'yes' as it's almost always a win.

# If you want to save some CPU in the saving child set it to 'no' but

# the dataset will likely be bigger if you have compressible values or keys.

#是否压缩

rdbcompression yes 

c.RDB缺陷

 

u RDB数据不是实时的,数据库一旦出现问题,那么上次生成RDB到数据库挂掉这段时间内生成的数据都会丢失掉

u 生成RDB是一个内存复制再写入文件的过程,如果一个redis数据库内存里有4G的数据,那么完成RDB则至少需要8G的内存

u RDB是无法实现增量的写入的


2.AOF

AOF是类似关系型数据库日志的一种文件,默认是关闭的,开启后它的优先权高于RDB。

 ######################## APPEND ONLY MODE ##########################

 

# By default Redis asynchronously dumps the dataset on disk. This mode is

# good enough in many applications, but an issue with the Redis process or

# a power outage may result into a few minutes of writes lost (depending on

# the configured save points).

#

# The Append Only File is an alternative persistence mode that provides

# much better durability. For instance using the default data fsync policy

# (see later in the config file) Redis can lose just one second of writes in a

# dramatic event like a server power outage, or a single write if something

# wrong with the Redis process itself happens, but the operating system is

# still running correctly.

#

# AOF and RDB persistence can be enabled at the same time without problems.

# If the AOF is enabled on startup Redis will load the AOF, that is the file

# with the better durability guarantees.

#

# Please check http://redis.io/topics/persistence for more information.

#默认是关闭的

 

appendonly no

 

# The name of the append only file (default: "appendonly.aof")

#AOF文件命名格式

 

appendfilename "appendonly.aof" 

AOF rewrite功能

AOF的运作方式是不断地将命令追加到文件末尾,AOF文件的体积也越来越大。使用AOF rewrite功能后能对AOF文件进行重建,缩小文件的大小。


 # Automatic rewrite of the append only file.

# Redis is able to automatically rewrite the log file implicitly calling

# BGREWRITEAOF when the AOF log size grows by the specified percentage.

#

# This is how it works: Redis remembers the size of the AOF file after the

# latest rewrite (if no rewrite has happened since the restart, the size of

# the AOF at startup is used).

#

# This base size is compared to the current size. If the current size is

# bigger than the specified percentage, the rewrite is triggered. Also

# you need to specify a minimal size for the AOF file to be rewritten, this

# is useful to avoid rewriting the AOF file even if the percentage increase

# is reached but it is still pretty small.

#

# Specify a percentage of zero in order to disable the automatic AOF

# rewrite feature.

 

#当AOF文件超过64M时,自动重建

auto-aof-rewrite-min-size 64mb

#重建的比例

auto-aof-rewrite-percentage 100

#另外也可以用过bgrewriteaof命令手动重建 

关于 redis 持久化 rdb 和 aof 可以查看 http://my.oschina.net/davehe/blog/174662


四.内存限制

redis是一款内存数据库,前面也说过当生成rdb(快照)文件时,至少要留出一半的内存空间,那么就需要设置最大内存限制

 # Don't use more memory than the specified amount of bytes.

# When the memory limit is reached Redis will try to remove keys

# according to the eviction policy selected (see maxmemory-policy).

#

# If Redis can't remove keys according to the policy, or if the policy is

# set to 'noeviction', Redis will start to reply with errors to commands

# that would use more memory, like SET, LPUSH, and so on, and will continue

# to reply to read-only commands like GET.

#

# This option is usually useful when using Redis as an LRU cache, or to set

# a hard memory limit for an instance (using the 'noeviction' policy).

#

# WARNING: If you have slaves attached to an instance with maxmemory on,

# the size of the output buffers needed to feed the slaves are subtracted

# from the used memory count, so that network problems / resyncs will

# not trigger a loop where keys are evicted, and in turn the output

# buffer of slaves is full with DELs of keys evicted triggering the deletion

# of more keys, and so forth until the database is completely emptied.

#

# In short... if you have slaves attached it is suggested that you set a lower

# limit for maxmemory so that there is some free RAM on the system for slave

# output buffers (but this is not needed if the policy is 'noeviction').

#

#该选项告诉redis当使用了多少内存后就拒绝后续的写入,可以配合maxmemory-policy一起使用

# maxmemory

五.主从复制

只需在redis.con中配置好master的IP和端口号即可

 ########################## REPLICATION ###########################

 

# Master-Slave replication. Use slaveof to make a Redis instance a copy of

# another Redis server. A few things to understand ASAP about Redis replication.

#

# 1) Redis replication is asynchronous, but you can configure a master to

#    stop accepting writes if it appears to be not connected with at least

#    a given number of slaves.

# 2) Redis slaves are able to perform a partial resynchronization with the

#    master if the replication link is lost for a relatively small amount of

#    time. You may want to configure the replication backlog size (see the next

#    sections of this file) with a sensible value depending on your needs.

# 3) Replication is automatic and does not need user intervention. After a

#    network partition slaves automatically try to reconnect to masters

#    and resynchronize with them.

#

 slaveof 192.168.17.230 6379 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值