Chinaunix

标题: redis 功能汇总 [打印本页]

作者: cjfeii    时间: 2016-04-19 09:53
标题: redis 功能汇总
本帖最后由 cjfeii 于 2016-04-19 09:59 编辑

redis-intro.pdf (687.5 KB, 下载次数: 26)


简单介绍
    REDIS: REmote DIctionary Server
    作者:Salvatore Sanfilippo
    key-value 存储系统
    具有一些丰富的数据结构
    还有很多功能,后面一一介绍

数据类型
    REDIS_STRING : 字符串
    REDIS_LIST : 列表
    REDIS_SET : 集合
    REDIS_ZSET : 有序集合
    REDIS_HASH : 哈希表
    可以用TYPE命令查看对象类型

事务介绍
    一般事务都具有 ACID 属性
    Redis 的事务是不完整的事务
        只能保证一个事务中的命令连续执行
        事务中间命令出错,并不能回滚
        事务执行中服务器挂了,也不能回滚

脚本编程
    从 Redis2.6 开始支持 Lua 脚本编程
    可以用这种方式实现一些简单事务
    类似于 RDBMS 中的存储过程
    节省流量
    例子:
        EVAL "local a = redis.call('GET', 'bob:account'); local b = redis.call('GET', 'smith:account'); if not a or not b then return 1 end; a = a - 20; b = b + 20; if not redis.call('MSET', 'bob:account', a, 'smith:account', b) then return 2 end; return 0;" 0

发布订阅
    发布订阅(pub/sub)是一种消息通信方式
    和消息队列类似
    发布订阅不涉及数据的存储,和 Redis 数据库其他功能完全隔离
    有两个角色执行不同的动作
        消息发布者(publisher)向某个频道(channal)发布消息
        消息订阅者(subscriber)订阅某个频道的消息

持久存储
    Snapshotting (default) -- dump.rdb
    AOF -- appendonly.aof

主从复制
    Redis 主从支持多种模式:M-S,S-M-S,M-S-S
    使得读写分离成为可能
    主从之间异步复制
    有这样一种模式,为提升写性能,Master 不做持久化,Slave 做持久化


DBA CMD
    INFO
    DBSIZE
    KEYS
    CONFIG SET / CONFIG GET
    FLUSHDB / FLUSHALL
    MONITOR / SLOWLOG GET / SLOWLOG SET
    TIME / PING
    CLIENT LIST / CLIENT KILL
    SAVE / BGSAVE / BGREWRITESAVE / LASTSAVE
    SHUTDOWN

Redis 协议
    实现简单
    解析快速
    可读性好
    set  mykey  myvalue
    *3\r\n$3\r\nSET\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n

Redis 虚拟内存
    突破内存的限制
    把不经常使用的数据 swap 到磁盘上,腾出内存保持其他数据

LRU-Cache
    Redis 做 Cache 不需要持久化
    置换方法:
        noeviction: 不进行置换,表示即使内存达到上限也不进行置换,所有能引起内存增加的命令都会返回error
        allkeys-lru: 优先删除掉最近最不经常使用的key,用以保存新数据
        volatile-lru: 只从设置失效(expire set)的key中选择最近最不经常使用的key进行删除,用以保存新数据
        allkeys-random: 随机从all-keys中选择一些key进行删除,用以保存新数据
        volatile-random: 只从设置失效(expire set)的key中,选择一些key进行删除,用以保存新数据
        volatile-ttl: 只从设置失效(expire set)的key中,选出存活时间(TTL)最短的key进行删除,用以保存新数据

Redis-Sentinel
    Redis 高可用方案
    适用于1主多从的情况,Master 挂掉,Sentinel 负责从多个 Slave 中选出一个作为 Master,并将其他的 Slave 连上新的 Master
    使用 Raft 选举算法:raft.github.io/

Redis-Geo
    Redis 地理模块
    据说会在 Redis3.2 版本正式发布

Redis-Cluster 实践
    redis3.0开始支持
   
TODO:
    ...
作者: daili0703    时间: 2016-04-19 10:07

作者: stay_sun    时间: 2016-04-19 14:14
学习
作者: renxiao2003    时间: 2016-04-19 17:01
楼主太看得起我了。这一块没接触过。
作者: cjfeii    时间: 2016-04-20 08:26
突然发现还有要请的功能,之前从来没用过,所有就把朋友都要请过来了

回复 4# renxiao2003


   
作者: renxiao2003    时间: 2016-04-20 11:07
回复 5# cjfeii


    哈哈。一起学习一下还是可以的。
作者: cjfeii    时间: 2016-04-20 15:30
现在论坛的下载功能真的是很扯淡,让那些不玩微信的怎么活啊。。。
作者: cryboy2001    时间: 2016-07-06 15:21
路过支持。。。。。。。。。
作者: cjfeii    时间: 2016-07-06 17:25
   欢迎路过。。。
回复 8# cryboy2001


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2