Redis关键点(Redis数据结构)

网络上Redis的教程已经很多了,这里介绍一个比较好的网站:

http://blog.nosqlfan.com/html/3537.html

但本文是要从Redis的关键点提炼讲述一下,并且后面讲附带实战项目的应用情况。

这一篇是讲Redis数据结构的数据结构:

 

Redis 键:

Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如”foo”的简单字符串到一个JPEG文件的内容都可以。空字符串也是有效key值

 

Redis的数据类型有哪些:

 

1.字符串类型:

通常用SET command GET command来设置和获取字符串值。

$ redis-cli set mykey "my binary safe value"
OK
$ redis-cli get mykey
my binary safe value

值可以是任何种类的字符串(包括二进制数据),例如你可以在一个键下保存一副jpeg图片。值的长度不能超过1GB。

虽然是字符串类型,但是我们依旧可以使之自增自减操作,这是在实际应用中经常使用到的原子操作。

使用INCRDECR命令:

$ redis-cli set counter 100
OK $ redis-cli incr counter
(integer) 101
$ redis-cli incr counter
(integer) 102
$ redis-cli incrby counter 10
(integer) 112

类似的命令有INCRBY and DECRBY。实际上他们在内部就是同一个命令,只是看上去有点儿不同。

在执行这些原子命令的时候,其他客户端不会在同一时间执行任何命令。

另外还有个命令介绍:

GETSET:用于设置一个新值同时返回原始值,可以用于定时重置之类的功能。

 

2.列表类型:

Redis lists基于Linked Lists实现。

LPUSH 命令可向list的左边(头部)添加一个新元素,而RPUSH命令可向list的右边(尾部)添加一个新元素。最后LRANGE 命令可从list中取出一定范围的元素
Redis lists基于Linked Lists实现Redis lists基于Linked Lists实现类似的命令有INCRBY, DECR and DECRBY。实际上他们在内部就是同一个命令,只是看上去有点儿不同。类似的命令有INCRBY, DECR and DECRBY。实际上他们在内部就是同一个命令,只是看上去有点儿不同。类似的命令有INCRBY, DECR and DECRBY。实际上他们在内部就是同一个命令,只是看上去有点儿不同。类似的命令有INCRBY, DECR and DECRBY。实际上他们在内部就是同一个命令,只是看上去有点儿不同。

$ redis-cli rpush messages "Hello how are you?"
OK
$ redis-cli rpush messages "Fine thanks. I‘m having fun with Redis"
OK
$ redis-cli rpush messages "I should look into this NOSQL thing ASAP"
OK
$ redis-cli lrange messages 0 2
1. Hello how are you?
2. Fine thanks. I‘m having fun with Redis
3. I should look into this NOSQL thing ASAP


 

3.Redis 集合

Redis集合是未排序的集合,其元素是二进制安全的字符串。

一定要留意SORT命令,Redis集合和list都是可排序的。

 

4.有序集合

Redis1.2引入了有序集合。他和集合非常相似,也是二进制安全的字符串集合,但是这次带有关联的score,以及一个类似LRANGE的操作可以返回有序元素,此操作只能作用于有序集合,它就是,ZRANGE 命令。

有序集合是通过一个dual-ported 数据结构实现的,它包含一个精简的有序列表和一个hash table,因此添加一个元素的时间复杂度是O(log(N))。这还行,但当我们需要访问有序的元素时,Redis不必再做任何事情,它已经是有序的了:

$ redis-cli zrange hackers 0 -1
1. Alan Turing
2. Claude Shannon
3. Alan Kay
4. Richard Stallman
5. Yukihiro Matsumoto
6. Linus Torvalds

想反向对这些元素排序,这次就用 ZREVRANGE 代替 ZRANGE 吧。

区间操作

有序集合之能不止于此,他能在区间上操作。例如获取所有1950年之前出生的人。我们用 ZRANGEBYSCORE 命令来做。

详细的命令参考:http://redis.io/commands

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值