redis的一些操作命令

来源:互联网 发布:oracle表数据恢复 编辑:程序博客网 时间:2024/06/05 17:21

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 one2. 把redis运行中配置写到配置文件中:CONFIG REWRITE3. 设置redis长连接:config get timeout config set timeout 0 config rewrite





0 0