您的位置:首页 > 数据库 > Redis

NoSQL数据库Redis之莫问剑(String类型)的修炼

2012-10-17 10:16 549 查看
Redis数据库是基于

内存的数据库,速度极快,那今天我们来看看这种超级牛X的数据库的操作使用方法,还记得我上文提过的

Redis的七种数据类型吧,我们这里把它称之为Redis七剑下天山,即为:莫问剑,游龙剑,青干剑,舍神剑,

天瀑剑,日月剑,竞星剑!

现在,为师来分别传授给大家每一把剑的奥妙及使用方法:

首先我们来启动Redis的客户端,启动Redis客户端的命令我们使用 src/redis-cli命令启动,即可进入Redis的

shell客户端,一切准备就绪,咱们开始学习这七把剑....

第一把----------------------莫问剑(String类型)

介绍:String是最简单的类型,你可以理解成与Memcached是一模一样的类型,一个Key对应一个Value,目前

你可以完全实现Memcached的功能,而且效率要比Memcached高很多,同时可以设置Redis的定时数据持久

化,操作日志的记录以及主从复制等功能!

技能:

1.set

设置Key对应的值为string类型的value。

例如我来设置一个name = MoWenJian 的键值对,可以这样做:

[root@localhost src]# /usr/local/redis/src/redis-cli

redis 127.0.0.1:6379> set name MoWenJian

OK

redis 127.0.0.1:6379>
2.setnx

设置key 对应的值为string
类型的value。如果key 已经存在,返回0,nx 是not exist 的意思。

例如我们添加一个name= MoWenJian_New 的键值对,可以这样做:

redis 127.0.0.1:6379> get name

"MoWenJian"

redis 127.0.0.1:6379> setnx name MoWenJian_New

(integer) 0

redis 127.0.0.1:6379> get name

"MoWenJian_New"

redis 127.0.0.1:6379>
由于原来name 有一个对应的值,所以本次的修改不生效,且返回码是0。

3.setex

设置一个键对应的值,并对此键值对设置一个有效期。

例如:我们指定一个键值对 lampbrother = success,并且设置一个有效期为10秒,我们来这样做:

redis 127.0.0.1:6379> set lampbrother 10 success
OK

redis 127.0.0.1:6379> get lampbrother
"success" 

redis 127.0.0.1:6379> get lampbrother 
(nil)

redis 127.0.0.1:6379>
由于第二次调用已经超过10秒,所以无法取到lampbrother的值了!!!

4.setrange

设置指定键的值的子字符串。

例如:我现在要把 jiege 的邮箱 lijie@li-jie.me 改为 lijie@lampbrother.net

redis 127.0.0.1:6379> get jiege
"lijie@li-jie.me"

redis 127.0.0.1:6379> setrange jiege 6 lampbrother.net
(integer) 21 

redis 127.0.0.1:6379> get lampbrother 
"lijie@lampbrother.net"

redis 127.0.0.1:6379>
5.mset

同时设置多个键值对,成功返回ok表示所有键设置成功,失败则返回0表示所有键设置都不成功

例如:我们同时设置 李文凯 的多个爱好:

redis 127.0.0.1:6379> mset hobby1 smoke hobby2 beer hobby3 girl
OK

redis 127.0.0.1:6379> get hobby1
"smoke" 

redis 127.0.0.1:6379> get hobby3 
"girl"

redis 127.0.0.1:6379>
6.msetnx

同时设置多个键值对,同样失败返回0表示所有键都没有设置成功,成功返回OK表示所有键都设置成功,但

不同于mset的是本方法不会设置已经存在的键值对!

redis 127.0.0.1:6379> get hobby1
"smoke" 

redis 127.0.0.1:6379> get hobby3 
"girl"

redis 127.0.0.1:6379> msetnx hobby1 chouyan hobby4 hejiu

(integer) 0
redis 127.0.0.1:6379> get hobby4

(nil)
redis 127.0.0.1:6379> get hobby3
"girl"
可以看出如果这条命令返回0,那么里面操作都会回滚,都不会被执行。

7.get

获取某个键对应的值,如果不存在则返回
nil

redis 127.0.0.1:6379> get hobby4

(nil)
redis 127.0.0.1:6379> get hobby3
"girl"
如上例,hobby3存在,并且值为"girl",hobby4不存在,则返回 nil

8.getset

设置某一个键的值,并且返回该键的旧值,如果该键不存在,则返回
nil,然后再设置新的值

例如:

redis 127.0.0.1:6379> getset hobby4
football

(nil)
redis 127.0.0.1:6379> getset hobby3
basketball
"girl"
redis 127.0.0.1:6379> get hobby4
"football" 
redis 127.0.0.1:6379> get hobby3
"basketball"
9.getrange

获取指定键的值的子字符串

例如:

redis 127.0.0.1:6379> getrange jiege 0 4

"lijie"
redis 127.0.0.1:6379> getrange jiege -15 -1
"lampbrother.net"
redis 127.0.0.1:6379> getrange jiege 0 100
"lijie@lampbrother.net"
上例中,getrange
jiege 0 4 表示获取 jiege 这个键的值的下标为 0~4 的所有字符

同样,getrange
jiege -15 -1 表示获取 jiege 这个键的值的下标从后数第15个到最后一个的所有字符

而 getrange
jiege 0 100 则表示全部输出 jiege 这个键的值的所有字符,因为最后一个字符的下标 小于 100,

当下标超出字符串长度时,将默认为是同方向的最大下标。

10.mget

一次性获取多个键的值,如果键不存在,则返回
nil

例如:

redis 127.0.0.1:6379> mget hobby1 hobby2 hobby5

1) "smoke"
2) "beer"

3) (nil)
redis 127.0.0.1:6379>
hobby5不存在,所以返回nil。

11.incr

对一个键的值做加加操作,并返回新的值,如果该键的值类型不是int类型,将会报错,如果该键不存在,则设置该键为1

例如:

redis 127.0.0.1:6379> set age 20
OK
redis 127.0.0.1:6379> incr age

(integer) 21

redis 127.0.0.1:6379> get age

"21"
redis 127.0.0.1:6379> get age1

(nil)
redis 127.0.0.1:6379> incr age1
(integer) 1
redis 127.0.0.1:6379> get age1
"1"
12.incrby

类似于incr,但是incrby可以指定增加的值

例如:

redis 127.0.0.1:6379> incrby age 5

(integer) 26

redis 127.0.0.1:6379> get age

"26"
redis 127.0.0.1:6379> incrby
age -1
(integer) 25

redis 127.0.0.1:6379> get age
"25"
大家可以看到,5代表给age键增加5,而-1表示给age键减1,即正数为加,负数为减

13.decr

对某一个键做减减操作,同incr

例如:

redis 127.0.0.1:6379> set age 20
OK
redis 127.0.0.1:6379> decr age

(integer) 19

redis 127.0.0.1:6379> get age

"19"
redis 127.0.0.1:6379> get age1

(nil)
redis 127.0.0.1:6379> decr age1
(integer) -1
redis 127.0.0.1:6379> get age1
"-1"
14.decrby

同incrby,给某一键减去指定的值

redis 127.0.0.1:6379> decrby age 5

(integer) 14

redis 127.0.0.1:6379> get age

"14"
decrby 完全是为了可读性,我们完全可以通过incrby 一个负值来实现同样效果,反之一样。

15.append

给指定key 的字符串值追加value,返回新字符串值的长度。

例如:

redis 127.0.0.1:6379> set name lijie

OK

redis 127.0.0.1:6379> get name

"lijie"

redis 127.0.0.1:6379> append name @li-jie.me
(integer) 15
redis 127.0.0.1:6379> get name
"lijie@li-jie.me
16.strlen

取指定key 的value 值的长度。

例如:

redis 127.0.0.1:6379> get name
"lijie@li-jie.me"  

redis 127.0.0.1:6379> strlen name
(integer) 15 

redis 127.0.0.1:6379> get age
"20"
redis 127.0.0.1:6379> strlen age
(integer) 2
好了,这就是我们的莫问剑(String类型)的所有技能,为师已经传授给各位,不知各位能否深刻领悟,

如有无法体悟之处,请跟帖回复,切勿自行闭门修炼,以免走火入魔!

今天咱们就练到这里,下文将给大家详细介绍Redis的第二把剑---------游龙剑(hashes
类型)的操作,敬请期待!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息