您的位置:首页 > 数据库 > Redis

redis的一些操作命令

2014-10-12 14:53 260 查看
1.   ps -ef | grep redis (查看redis的启动实例)

2.   ./src/redis-cli -p 6380 shutdown(关闭6380实例)

3.   ./src/redis-server redis_yuzhan.conf(启动6380实例)

4.   127.0.0.1:6481> SLAVEOF 127.0.0.1 6380(把6481作为6380的slave服务器)

5.   spring事务:http://www.cnblogs.com/rushoooooo/archive/2011/08/28/2155960.html

private static XStream xStream;

static {
xStream = new XStream();
xStream.ignoreUnknownElements();
xStream.autodetectAnnotations(true);
}

public static String toXml(Object obj) {
return xStream.toXML(obj);
}

@SuppressWarnings("unchecked")
public static <T> T fromXml(String xmlStr, Class<T> cls) {
T obj = (T) xStream.fromXML(xmlStr);
return obj;
}

6. 如果你的redies集群有好几台从服务器,不要一次启动所有的从服务器,因为从服务器启动会从主服务器中全量同步数据,如果一次启动过多从服务器,那么主服务器就会fork出大量的子进程去dump,这样会造成主服务器高io,可能导致主服务器挂掉。

7. 当进行AOF持久化的时候

# appendfsync always 系统不缓冲,直接写,慢,丢失数据少
appendfsync everysec   每秒写一次
# appendfsync no 系统不缓冲,直接写,慢,丢失数据少
如果采用appendfsync no的方式,每写入一条命令,就往文件中写一条,这样就违背了内存数据库的只能,还不如直接写文件,因此用这种的方式:
appendfsync everysec   每秒写一次

如果每秒写入一次,这样就会减少redis的性能,这也是没办法避免的。为了数据安全性考虑。

8. 不小心flushall服务器

解决方案:立即shutdown nosave服务器!

原因:防止别的进程正在写服务器,导致aof重写。因为服务器在shutdown的时候,都会重写aof,因此加上nosave。可以让她不重写aof

9.减产rdb文件的完整性

redis-check-dump redis.conf

1. 设定slave服务器为master服务器

slaveof no one-->次台主机不作为任何机器的从服务器。

config set slave-read-only no -->可读

2. redis重试

/**
* 加入缓存,带重试,最多重试MAX_RETRY次
*/
private boolean addToRedis(String key, String value) {
if (!StringUtil.checkBlank(key)) {
int retryCount = 0;
while (retryCount < MAX_RETRY) {
try {
this.redisUtils.set(key, value);
return true;
} catch (Exception e) {
if (retryCount == MAX_RETRY - 1)
LOG.error("addToRedis : Error Del From Redis , Key=" + key + ",value=" + value, e);
retryCount++;
}
}
}
return false;
}

3. redis在物理上改变主从关系

public String slaveofNoOne() throws RedisAccessException {
boolean flag = true;
ShardedJedis j = null;
String result = null;
String script = "return redis.call('CONFIG','REWRITE')";

try {
j = writePool.getResource();
Collection<Jedis> list = j.getAllShards();
for (Jedis jedis : list) {
jedis.slaveofNoOne();
jedis.eval(script);
}
} catch (Exception ex) {
flag = false;
writePool.returnBrokenResource(j);
throw new RedisAccessException(ex);
} finally {
if (flag) {
writePool.returnResource(j);
}
}
return result;
}

4. redis 部署方案

Redis的slave节点必须配置slave-serve-stale-data=no。以便失效节点恢复成为slave时数据得到全部同步才可以放入视为健康节点。(不不要在配置文件中设置主从关系,因为运行中主从角色会发生变化要在配置文件中设置主从关系,因为运行中主从角色会发生变化。设置slave-serve-stale-data
no,不允许从节点接收客户端的读写请求)

5. redis主从切换方案



1. 在redis更改主从配置。slave no one
2. 把redis运行中配置写到配置文件中:CONFIG REWRITE

3. 设置redis长连接:config get timeout
config set timeout 0
config rewrite
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: