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 返回已删除元素数量









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值