Redis学习笔记

Redis 
  http://www.ywnds.com/?p=5721
Memcached Redis 不支持持久化 支持持久化 纯set get性能好 不如Memcached 简单易用 易用 支持类型单一 支持多种数据类型 依靠magent 集群 没有验证 有基础验证 session 购物车(登陆前放cookie,登录后放redis) 为啥用Redis
? 支持多种数据类型,集群,持久化。 解决方案:1、写两份性能差 2、延迟预刷 扩展学习:http://ssdb.io/zh_cn/ LevelDB 应用场景决定redis可以主主复制。 Hbase基本能满足需求,支持集群。海量数据。 redis安装: wget 下载 make PREFIX=/usr/local/redis MALLOC=libc install 配置文件: 尽量用6379做区分,为以后多实例做区分。 参数补充:requirepass 密码 密码必须申请,否则很容易别黑客拿到root密码。 overcommit_memory is set to 0 超过机器内存,直接报错。建议设置1 sysctl vm.overcommit_memory=1 echo never > /sys/kernel/mm/transparent_hugepage/enabled #关闭大页内存 /usr/local/redis/bin/redis-cli -a hdkj -h 172.16.12.10 redis命令: http://doc.redisfans.com/ set name linux get name auth hdkj keys * #生产环境不能用 exists name del name set name linux type name 计数:set page_view 20 incr page_view doc.redisfans.com hset car price 20000 hset car name BMW type car keys * hgetall car hget car name hget car price set car hehe #set 有至高权力,会将hset 设置的覆盖 type car #变成字符串类型了 set car name BMW会报错 del car hset car price 20000 hset car name BMW hdel car #报错,作用域是car的价格或者名字 hdel car name 正确 hkeys car hlen car #几个元素 hset car date 20180101 del car #注意,是都删除,hdel的删除是有区别的 删除大的hash表删除 www.unixhot.article/34 list 最新的5条 lpush numblers 1 lpush numbers a rpush numbers 1 rpush numbers a llen numbers lrange numbers 0 -1 获取所有值 lpop numbers 弹出 集合: sadd sadd a 1 sadd a 2 sadd a 3 sadd b 2 sadd b 3 sadd c 3 type a 是set类型,集合类型 smembers a 获取集合中的元素 sismember a 5 判断是否存在 sdiff a b 差集 sunion a b 并集 sinter a b 交集 有序集合: zset 发布订阅:生成不用,有问题的,获取消息时如果宕机,消息丢失。 阿里的消息队列RocketMQ 日志收集放到kafuka,数据不会丢。可以集群 事务:弱事务,执行中报错捕捉不到。 持久化和主从: http://doc.redisfans.com/topic/persistence.html RDB: 数据集的快照,适合备份。fork()一个子进程,可能会卡。 AOF:相当于binglog 生成都开。 vim /etc/redis/redis.conf save 900 1 #900秒有一个key发生改变 save 300 10 save 60 10000 dbfilename dump_dump_6379.rdb rdbcompression yes AOF默认1秒fsync() 备份: config set appendonly yes config set save "" 关闭rdb master不做持久化,slave上做持久化 复制: 不超过16G,能拆么? 不能拆,集群。 主从配置:slaveof IP 端口 默认从服务器是只读的。切换不能写的。 要执行slaveof no one 哨兵可以做主从切换。建议要会手动切换,3年都不宕机的。 memcache 客户端分片(静态分片) 一致性hash,无法扩展无法自动迁移。 代理分片:twemproxy推特开源的 缺点无法自动迁移,proxy会性能瓶颈。 redis集群:主节点故障自动切换,无中心,需要专用的客户端,可以自动扩展。 能解决网卡带宽的问题。16384个槽,根据算法知道key放到哪里。 豌豆荚开源的codis: 1、案例多 2.dashboard 3、迁移工具 zookeeper etcd github.com/Codist.abs/codis ############################################ redisdoc.com multi set key1 1 set key2 2 set key3 3 exec multi set key1 1 sadd key 1 exec 一个执行,一个不执行,redis 集群不保证数据的强一致性。 redisdoc.com config get s* 运维:集群、主从、持久化 ############################################# 集群:16384 hash槽 mkdir `seq 7001 7008` id要改,日志文件要改,dbfilename要改,dir要改 for i in `seq 7001 7008`; do echo $i; done for i in `seq 7001 7008`; do cd /opt/$i && /usr/local/redis/bin/redis-server redis.conf;done yum install ruby rubygems -y 找到redis-tirb.rb redis-trib help redis-trib create --replicas 1 192.168.2.149:7001 .... 123是主,456是从 cluster nodes cluster info 添加节点: redis-trib add-node 192.168.2.149:7007 192.168.2.149:7001 cluster nodes 4个master,但是7007没有槽位。 redis-trib reshard 192.168.2.149:7007 500 7007的ID cluster nodes 槽位不连续, 7008做7007的从节点,刚加入是主,且没有槽位 redis-trib add-node 192.168.2.149:7008 192.168.2.149:7001 cluster replicate 7007id ###################### 管理工具: yum install httpd php php-redis gitlab-ctl stop 80 端口不要被占用 git clone https://gt/phpredisadmin rdbtools 生产工具使用,哪些key比较大,生成内存报告 pip install rdbtools rdb -c memory dump.rdb >memory.csv docs.saltstack.com redis模块 删除固定业务的key codis 豌豆荚 ########################## RDB save bgsave 数据量超大fock() 10多个G会导致停几秒 好备份,性能有影响。 bgsave如何知道执行完成? 主从的原理? AOF appendonly yes appendfilename "appendonly.aof" 两个同时用。也是fock()一个子进程。 定期重写使的数据存储更小。 cat appendonly.aof 主从原理,灾难恢复? magent做代理数据量大是坑, couchbase是新浪写的memcache的持久化工具。 持久化、主从、集群原理及测试

 

redis命令: http://doc.redisfans.com/
    运维常用命令:
    1、连接 ./redis-cli -h 172.16.12.10
       auth test123
       config set requirepass hdkj
       quit
       ping
       auth hdkj
       ping
       config set requirepass "" #清空密码

       select 1  进入的数据库0-15,命令提示符多了个 [1]

       bgrewriteaof 创建当前aof文件的优化版本,日志里会记录执行是否成功。
       
       client setname hello-world
       client getname
       client setname ""
       client list
       client kill IP:PORT #之前的连接关闭,创建新连接。
       client list   命令行输出的解释:http://doc.redisfans.com/server/client_list.html
       
       config get *
       config get s*
       config get save
       config set save "901 1 300 10 60 10000"
       config resetstat  #重置info命令中的某些统计数据
       conifg rewrite    #动态修改的参数在配置文件中也修改了。

       dbsize  数据库key的数量

       info
       monitor  #调试时使用,打印出所有执行的语句。
       psync    #复制使用的命令
       shutdown save

       slaveof IP port  如果已经是从服务器,会丢掉旧数据集,对新主服务器同步。
       slaveof no one   #从服务器要升级为主服务器,一定要执行的。

       config get slow*
       slowlog get
       slowlog len
       slowlog reset
       slowlog len

       sync  #复制使用
       time  #服务器时间

主从复制:
       sync-->bgsave-->缓冲区数据同步
       部分重同步:主服务器缓冲区保留从库的偏移量,psync实现的部分重同步。
       slave-read-only  从库的默认模式
       主库设置了密码,从库必须也得设置密码。
       config set masterauth <password>
       masterauth <password>
       min-slaves-to-write <number of slaves>
       min-slaves-max-lag <number of seconds>
       主从复制是异步复制,不能保证数据写入的持久性。

       AOF 的默认策略为每秒钟 fsync 一次。

Redis集群:
        redis集群不保证数据的强一致性,主从同步还是异步的,为了主节点的处理速度。

 

posted on 2018-02-10 22:45  星期六男爵  阅读(172)  评论(0编辑  收藏  举报

导航