redis内存数据库

来源:互联网 发布:淘宝为啥不卖斐讯 编辑:程序博客网 时间:2024/05/18 18:20

redis是一个支持持久化的内存数据库也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持两种持久化方式,一种是默认方式 Snapshotting(快照),另一种是Append-only file的方式。

一、Snapshotting(快照)

    1)、redis调用fork,现在有了子进程和父进程。

    2)、子进程开始将数据写到临时RDB文件中。

    3)、当子进程完成写RDB文件,用新文件替换老文件。

    4)、这种方式可以使Redis使用copy-on-write技术。

二、AOF日志

    1)、redis调用fork,现在有了子进程和父进程。

    2)、子进程根据内存中的数据库快照,往临时文件中写入重建数据库状态的命令
    3)、父进程继续处理client请求,除了把写命令写入到原来的aof文件中。同时把收到的写命令缓存起来。这样就能保证如果子进程重写失败的话并不会出问题。
    4)、当子进程把快照内容写入已命令方式写到临时文件中后,子进程发信号通知父进程。然后父进程把缓存的写命令也写入到临时文件。
    5)、现在父进程可以使用临时文件替换老的aof文件,并重命名,后面收到的写命令也开始往新的aof文件中追加。

三、配置redis磁盘写入方式和时机

    appendonly yes              //启用aof持久化方式
    # appendfsync always     //每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
    appendfsync everysec     //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐
    # appendfsync no          //完全依赖os,性能最好,持久化没保证

四、redis数据类型

    1)、String(get、set、incr、decr mget)

        set msg "hello word";

        set number 10086;

        get msg;

        get number;

    2)、hash(hget,hset,hgetall)

        hset key field value 设置hash field为指定值,如果key不存在,则先创建。

        hset message "id" 100001;  //键入key-value

        hset message "name" "jack";

        hget key field  获取指定的hash field。

        hget message "id";   //通过key获得value

        hdel message "id";  //通过key删除

        hlen message;       //获取哈希键值对的数量

        hgetall 返回hash的所有filed和value

    3)、list(lpush,rpush,lpop,rpop,lrange)

        lpush key string 在key对应list的头部添加字符串元素,返回1表示成功,0表示key存在且不是list类型。

        lpush message "topic";

        rpush key string 同上,在尾部添加。

        rpush content "admin"'

        lpop key 从list的头部删除元素,并返回删除元素。如果key对应list不存在或者是空返回nil,如果key对应值不是list返回错误
        rpop key 同上,但是从尾部删除

    4)、set(sadd,srem,spop,sdiff ,smembers,sunion)

        sadd key member 添加一个string元素到,key对应的set集合中,成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误
        srem key member 从key对应set中移除给定元素,成功返回1,如果member在集合中不存在或者key不存在返回0,如果key对应的不是set         类型的值返回错误
        spop key 删除并返回key对应set中随机的一个元素,如果set是空或者key不存在返回nil
        srandmember key 同spop,随机取set中的一个元素,但是不删除元素
        smove srckey dstkey member 从srckey对应set中移除member并添加到dstkey对应set中,整个操作是原子的。成功返回1,如果member         在srckey中不存在返回0,如果key不是set类型返回错误

    5)、sort set(zadd,zrange,zrem,zcard)

        zadd key score member 添加元素到集合,元素在集合中存在则更新对应score

        zrank key member 返回指定元素在集合中的排名(下标),集合中元素是按score从小到大排序的

        zrem key member 删除指定元素,1表示成功,如果元素不存在返回0

        zcard key 返回集合中元素个数


0 0
原创粉丝点击