try redis - 快速入门(一)

来源:互联网 发布:linux oracle asm安装 编辑:程序博客网 时间:2024/05/16 05:48

   本人也是刚刚开始学习redis,博客就当是我的一个笔记。同时供大家交流学习使用。

    redis 官网提供了一个非常好的入门的在线交互式教程:http://try.redis.io/ ,我就是根据这个教程来一步一步学习的。


    一、SET/GET

   redis 作为 key-value 存储,常常被当做NoSQL使用。key-value 存储的本质就是,通过key能够保持value的值。如果能够唯一确认key,能够稍后取出value的值。SET就是用来存储值的。

SET server:name "weiyw"

redis会永久存储我们的数据。所以我们可以稍后向redis询问“我们在key为server:name存的值是什么?”而,redis将会给我返回 “weiyw”

        GET server:name

127.0.0.1:6379 > SET server:name "weiyw"OK127.0.0.1:6379 > GET server:name"weiyw"

二、INCR , DEL

DEL 是通过一个已知key 来删除 value.

INCR 是用来自自增长value.

127.0.0.1:6379 > SET connections 10OK127.0.0.1:6379 > INCR connections(integer) 11127.0.0.1:6379 > INCR connections(integer) 12127.0.0.1:6379 > DEL connections(integer) 1127.0.0.1:6379> GET connections(nil)127.0.0.1:6379 > INCR connections(integer) 1
通过上面代码执行结果可以发现,当del后,尝试获取connections的值的时候,会发现为nil,也就是不存在的意思,但是当调用INCR的时候,可以自增长到1。这说明INCR发现key对应的值不存在的时候,会给其value初始化成0。然后再自增长。

三、EXPIRE , TTL

redis 可以设置一个key的生命周期,这个时间的设置可以通过 EXPIRE完成。

       SET resource:lock "Redis Demo"
        EXPIRE resource:lock 120

其中,key为resource:lock的对象将会在 120 后被删除。当然我们可以用TTL命令来查看key还可以生存多久

       TTL resource:lock 

该命令会返回 resource:lock 的生命周期。如果返回 -2 则说明当前key不存在。返回 -1 则说明当前key永远不会过期。

127.0.0.1:6379> SET resource:lock "wei_ya_wen"OK127.0.0.1:6379> EXPIRE resource:lock 60(integer) 1127.0.0.1:6379> GET resource:lock"wei_ya_wen"127.0.0.1:6379> TTL resource:lock(integer) 41127.0.0.1:6379> TTL resource:lock(integer) 37127.0.0.1:6379> TTL resource:lock(integer) 37127.0.0.1:6379> TTL resource:lock(integer) 35127.0.0.1:6379> TTL resource:lock(integer) 14127.0.0.1:6379> TTL resource:lock(integer) 1127.0.0.1:6379> TTL resource:lock(integer) -2127.0.0.1:6379> GET resource:lock(nil)

上面的操作设置了一个 key 为 resource:lock,设置了生命周期为 60 秒。TTL命令可以看出在不同时间段,key的存活时间。当超过60S后,TTL返回-2,说明当前值不存在。为验证准确性,再调用GET,发现确实不存在。返回nil

四、RPUSH, LPUSH, LLEN, LRANGE, LPOP, and RPOP  (redis 的LIST 处理,算redis的新特性吧)

 redis 也支持集中比较复杂的数据类型。首当其冲的就是list.List可以理解为是一系列顺序排列的值。在redis中,我们可以讲key当做一个list来处理。

RPUSH:将new value 直接放到List末端(R我个人觉得可以理解为right ,也就是右端的意思)

127.0.0.1:6379> RPUSH friends "wei"(integer) 1127.0.0.1:6379> RPUSH friends "ya"(integer) 2127.0.0.1:6379> RPUSH friends "wen"(integer) 3
    其中的数字表示LIST的长度。

LPUSH: 将 new value 放置到LIST的最前端

127.0.0.1:6379> LPUSH friends "first"(integer) 4

LRANGE:可以理解为截取 LIST的子集合,需要两个参数。参数1:起始位置下标(从0开始计算),参数2 结束位置下标(当设置为-1时,表示结束位置为当前list的最末端)。

127.0.0.1:6379> LRANGE friends 0 -11) "first"2) "wei"3) "ya"4) "wen"127.0.0.1:6379> LANGE friends 0 1(error) ERR unknown command 'LANGE'127.0.0.1:6379> LRANGE friends 0 11) "first"2) "wei"127.0.0.1:6379> LRANGE friends 1 21) "wei"2) "ya"
上面实例分别查询了

   LRANGE friends 0 -1 ====》》获取从 第1个位置到最后一个位置的集合
    LRANGE friends 0 1 ====》》获取从第1个位置到第二个位置的集合
    LRANGE friends 1 2 ====》》 获取从第2个位置到第三个位置的集合

       LLEN : 返回LIST的当前长度

LLEN friends(integer) 4

       LPOP : 类似出队列。删除LIST的第一个元素,并且返回。

127.0.0.1:6379> LPOP friends"first"

      RPOP: 删除LIST的最后一个元素,并且返回。

127.0.0.1:6379> RPOP friends"wen"

五、SADD, SREM, SISMEMBER, SMEMBERS ,SUNION.(redis 中 Set 数据结构的特性)

redis 还支持set类型。Set 和 List的处理类似,但是除了每个元素只能出现一次


     SADD  添加 value 到当前的 Set 中

127.0.0.1:6379> 127.0.0.1:6379> SADD superpowers "wei"(integer) 1127.0.0.1:6379> SADD superpowers "ya"(integer) 1127.0.0.1:6379> SADD superpowers "wen"(integer) 1127.0.0.1:6379> SADD superpowers "wen"
例子中,当我两次添加 "wen"的时候,第二次添加没有成功,返回了 0


SREM  通过给定的value,从set中删除该值

127.0.0.1:6379> SREM superpowers "wen"(integer) 1127.0.0.1:6379> SREM superpowers "wen"(integer) 0
返回的是受影响的数量

SISMEMBER  通过给定value,判断该value是否存在该set中(有点类似jdk 中的contain() 方法)

  

127.0.0.1:6379> SISMEMBER superpowers "ya"(integer) 1127.0.0.1:6379> SISMEMBER superpowers "wen"(integer) 0

由于 “wen” 在刚刚做删除测试的时候,已经删除了。所以返回0.


SMEMBERS  返回当前set的值的集合





0 0