redisのいくつかの操作コマンド

3560 ワード

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方式を採用し、1つのコマンドを書き込むたびにファイルに1つ書きます.これにより、メモリ・データベースの可能性に反し、直接ファイルを書くほうがいいので、このような方法で:
appendfsync everysec        

1秒間に1回書き込むと、redisのパフォーマンスが低下するので、避けられません.データセキュリティのために考慮します.
8.うっかりflushallサーバー
ソリューション:今すぐshutdown nosaveサーバ!
原因:他のプロセスがサーバを書き込み中であることを防止し、aofの書き換えを招く.サーバはshutdown時にaofを書き換えるのでnosaveを付けます.彼女にaofを書き直さないようにすることができます
9.rdbファイルの完全性を減産する
redis-check-dump redis.conf
1.slaveサーバをマスターサーバに設定
slaveeof 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