• redis_笔记


    1.redis是什么

    这个问题的结果影响了我们怎么用redis。如果你认为redis是一个key value store,那可能会用它来

    代替mysql;如果认为它是一个可以持久化的cache,可能只是它保存一些频繁访问的临时数据。

    Redis是Remote dictionary server的缩写,在redis官网的副标题是a persistent key-value database

    With bulit-in net interface written in ansi-c for posix systems,这个定义偏向key value store。还有一些看法

    认为redis是一个memory database,因为它的高性能都是基于内存操作的基础。另外一些人认为

    Redis是一个data structure server,因为redis支持复杂的数据特性,比如list,set等。对redis的作用

    的不同解读决定你对redis的使用方式。

    互联网数据目前基本使用两种方式存储,关系数据库或key value。但是这些互联网业务本身并不属于

    这两种数据类型,比如用户在社会化平台中的关系,它是一个list,如果要用关系数据库存储就需要

    转换成一种多行记录的形式,这种形式存在很多冗余数据,每一行需要存储一些重复信息。如果用

    Key value存储则修改和删除比较麻烦,需要将全部数据读出再写入。Redis在内存中设计了各种数据类型,

    让业务能够高速原子地访问这些数据结构,并且不需要关系持久存储的问题,从架构上解决了前面

    两种存储需要走的一些弯路的问题。

    2.redis不可能比memcache快

    很多开发者都认为redis不可能比memcached快,memcached完全基于内存,而redis具有持久化

    保存特性,即使是异步的,redis也不可能比memcached快。但是测试结果基本是redis占绝对优势。

    一直思考这个原因,目前想到的有这几方面:

    Libevent。和memcached不同,redis并没有选择libevent,libevent为了迎合通用性造成代码庞大

    (目前redis代码还不到libevnet的1/3)及牺牲了在特定平台的不少性能。Redis用libevent中两个文件

    修改实现了自己的epoll event loop。业界不少开发者也建议redis使用另外一个libevent高性能替代

    Libdev,但是作者还是坚持redis应该小巧并去依赖的思路。一个印象深刻的细节是编译redis之前并

    不需要执行./configure。

    CAS问题。

     注:笔记部分可能参考其他作者内容的一个记录,仅为加深自己对概念的理解,这里一些可能忘记参考谁的了,所以望见谅。

  • 相关阅读:
    vba的单元格引用的总结
    为IE窗口添加菜单实例
    给SQLServer2000升级遇到的问题
    图片上传问题(含网页图片预览)
    javascript小技巧【待续】
    成功部署JSP网站的经验总结
    VBA实例
    为JDK增加新的jar包
    理解绝对定位和相对定位布局
    资源收集
  • 原文地址:https://www.cnblogs.com/cangdingju/p/5520232.html
Copyright © 2020-2023  润新知