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的值的集合
- try redis - 快速入门(一)
- try redis - 快速入门(二)
- [Redis系列]专题一:快速入门
- Redis新手快速入门(一)
- Redis快速入门:初识Redis
- Redis快速入门:初识Redis
- Redis快速入门:初识Redis
- Redis快速入门
- Redis快速入门
- redis 快速入门实战
- Redis快速入门
- Redis快速入门
- Redis快速入门
- Redis快速入门
- Redis快速入门
- Redis快速入门
- Redis快速入门
- redis快速入门
- unity3d从零开始(五):了解摄像机
- 大数据:“人工特征工程+线性模型”的尽头
- select使用
- 用编译时断言在早期发现错误
- at&t汇编学习(一)
- try redis - 快速入门(一)
- 要命的编译警告——指针参数类型混乱
- svn的简单上机使用说明
- Codeforces #271 div2
- 水樹 奈々 Blog 20140911 他の種類もお取り寄せしたい...♪♪♪译文
- Akka边学边写(1)-- Hello, World!
- CSS学习(一):css语法
- tabs - jQuery EasyUI
- gen_entitlements.py: No such file or directory