zoukankan      html  css  js  c++  java
  • redis 入门笔记

    1.
    key-value数据库,高性能的 读/存 数据库
    其存储 < RAM(内存)
    数据存储的两种形式 (1)内存==>持久化到硬盘 (2)一条一条注入硬盘,当然效率较低
    其性能10倍于MySQL
    是一种不支持SQL的数据库(NoSQL)

    2.
    Redis键
    key是二进制安全的,也就是说,从"foo"字符串到"JPEG"的文件都可以
    eg:"user:1000:password"        "object-type:id:field"

    3.
    字符串类型
    命令:SET             GET
    eg:set mykey "abc"
             get mykey

    4.
    INCR
    将字符串值解析成整型,将其加1避免key值重复的好办法

    5.
    list
    redis的list是基于linked lists 实现的,这意味着即使在一个list中有数百万个元素,在头部和尾部添加一个元素的操作,其时间复杂度也是常数级别的
    访问速度受限
    LPUSH
    Redis Lists用Linked list实现的原因是:
    对于数据库系统来说,至关重要的特征是:能非常快的在很大的列表上添加元素,另一个重要因素是,Redis lists能在常数时间取得常数长度
    LPUSH命令:可向list左边(头部)添加一个新元素
    RPUSH命令:可向list的右边(尾部)添加一个新元素
    LRANGE命令:可从list中取出一定范围的元素
    这两个索引都可以为负,来告知Redis从尾数开始计数,因此-1表示最后一个元素,-2表示list中的倒数第二个元素
    eg:rpush messages "hello"
            lrange messages 0 2
    这样就不需要SQL ORDER BY操作,将会非常快,也会非常容易扩展到百万级别元素的规模
    LLEN得到list的长度

    向Redis list压入ID而不是实际的数据
    eg:incr next.news.id
            set news:1:title "Redis is simple"
            set news:1:url "http://code.google.com/"
            lpush submitted.news 1

    6.
    Redis集合
    Redis集合是未排序的集合,其元素是二进制安全的字符串
    SADD命令:可以向集合添加一个新元素
    eg:sadd myset 1
            sadd myset 2
            sadd myset 3

    SMEMBERS命令:检查某个元素是否存在
    eg:smembers myset

    简单的方案:
    对每个想加标签的对象,用一个标签ID集合与之相关联,并且对于每个已有的标签,一组对象ID与之关联,
    例如假设我们的新闻ID 1000被加了三个标签tag1,2,5和77,就可以设置下面两个集合:
    sadd news:1000:tags 1
    sadd news:1000:tags 2
    sadd news:1000:tags 5
    sadd news:1000:tags 77

    sadd tag:1:objects 1000
    sadd tag:2:objects 1000​
    sadd tag:5:objects 1000​
    sadd tag:77:objects 1000​

    获得一个对象的所有标签:
    smembers news:1000:tags

    SINTER命令:可以在不同集合之间取出交集
    eg:sinter tag:1:objects tag:2:objects tag:5:objects tag:77:objects

    Redis集合和list都是可排序的
    Redis1.4将增加Hash类型

    基本上有序集合从某种程度上说是SQL世界索引 在Redis中的等价物
    它包含一个精简的有序列表和一个Hash Table,因此添加一个元素的时间复杂度是O(log(N))

    ZRANGE命令:有序输出
    ZREVRANGE命令:反序输出
    eg:zrange hackers 0 -1
            zrevrange hackers 0 -1

    SORT命令:对所有集合做不同的排序(耗费CPU)
    要想得到多种排序,一种可选方案是同时每个元素加入多个有序集合。
    例如获取所有1950年之前出生的人,可以用ZRANGEBYSCORE命令
    eg:zrangebyscore backers -inf 1950

    ZREMRANGEBYSCORE命令:删除区间内的元素
    例如从有序集合中删除生日介于1940-->1960
    eg:zremrangebyscore hackers 1940 1960 返回已删除元素数量









  • 相关阅读:
    ubutun Sogou输入法安装
    git的使用
    比较字符串(包含以及变位词)
    python 与时间有关的操作
    PyBrain库的example之NFQ流程图分析
    python之面向对象(继承)
    C/C++中一些不太注意到的小知识点--[锦集]
    python 有关引用的一些问题
    CMake尝鲜
    vim初探
  • 原文地址:https://www.cnblogs.com/sunyingyuan/p/3686261.html
Copyright © 2011-2022 走看看