02_NoSQL数据库之Redis数据库:string类型和hash类型(一)

2015-02-25 21:42:47 · 作者: · 浏览: 109
??
Strings类型及操作
?
String是最简单的类型,一个key对应一个Value,String类型是二进制安全的。Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。
?
?
?
Set
?
设置Key对应的值为string类型的value.
?
例如:我们添加一个name=lijie的键值对:
?
127.0.0.1:6379> set name toto
?
OK
?
?
?
//获取name的值:
?
127.0.0.1:6379> get name
?
"toto"
?
?
?
//再次重新设置name的值:
?
127.0.0.1:6379> set name totobrother
?
OK
?
127.0.0.1:6379> get name
?
"totobrother"
?
?
?
setnx
?
设置key对应的值为string类型的value,如果key已经存在,返回0,nx是not exist的意思。
?
也就是说,使用setnx来设置的时候,如果已经设置过了,返回0,取到的值是原来的值,没有设置过返回1。
?
127.0.0.1:6379> get name
?
"totobrother"
?
127.0.0.1:6379> setnx name totobrother
?
(integer) 0
?
127.0.0.1:6379> get name
?
"totobrother"
?
127.0.0.1:6379> set age 20
?
OK
?
127.0.0.1:6379> setnx age2 20
?
(integer) 1
?
127.0.0.1:6379> setnx age2 40
?
(integer) 0
?
127.0.0.1:6379> get age2
?
"20"
?
?
?
Setex
?
设置key对应的值为string类型的value,并指定此键值对应的有效期。
?
例如:我们添加一个haircolor=red的键值对,并指定有效期为10秒。
?
[toto@localhost bin]$ ./redis-cli 启动服务端
?
127.0.0.1:6379> setex haircolor 10 red 通过setex设置指定时间内的key value值有效
?
OK
?
127.0.0.1:6379> get haircolor 10秒内的时候有效
?
"red"
?
127.0.0.1:6379> get haircolor 10秒后无效了,10秒钟以后这个键会消失,可以重新对其设置。
?
(nil)
?
127.0.0.1:6379> setex当不指定时间的时候,表示永久有效。
?
Setrange
?
设置指定key的value值的字符串。
?
例如:我们希望将lijie的126邮箱替换为gmail邮箱。
?
127.0.0.1:6379> set name lijie@126.com 设置name的值
?
OK
?
127.0.0.1:6379> get name 获得name的值
?
"lijie@126.com"
?
127.0.0.1:6379> setrange name 6 gmail.com 这里的6表示字符所在的下标,表示从第几个下标开始替换。
?
(integer) 15 返回的是字符串的长度。
?
127.0.0.1:6379> get name 获得指定key的对应的值。
?
"lijie@gmail.com"
?
127.0.0.1:6379>
?
?
?
mset (批量设置)
?
一次设置多个key的值成功返回OK表示所有的值都设置了,失败返回0表示没有任何值被设置。
?
127.0.0.1:6379> mset key1 lijie1 key2 lijie2 批量设置key1和key2
?
OK
?
127.0.0.1:6379> get key1
?
"lijie1"
?
127.0.0.1:6379> get key2
?
"lijie2"
?
127.0.0.1:6379>
?
?
?
msetnx
?
一次设置多个key的值,成功返回OK表示所有的值设置了。失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key.
?
127.0.0.1:6379> get key2
?
"lijie2"
?
如果一个已经设置过,那么都设置不成功。如果有一个设置成功了,都设置不成功了
?
127.0.0.1:6379> msetnx key4 lampbrother.net key5 lijie@lampbrother key2 toto
?
(integer) 0
?
?
?
只有都没有设置过的,才可以进行设置。
?
127.0.0.1:6379> msetnx key4 lampbrother.net key5 lijie@lampbrother
?
(integer) 1
?
127.0.0.1:6379> get key4
?
"lampbrother.net"
?
127.0.0.1:6379> get key5
?
"lijie@lampbrother"
?
127.0.0.1:6379>
?
?
?
get
?
获取key对应的string值,如果key不存在返回nil
?
getset :获取旧值,并设置新值。
?
设置key的值,并返回key的旧值。
?
127.0.0.1:6379> getset key6 30
?
(nil)
?
127.0.0.1:6379> get key6
?
"30"
?
127.0.0.1:6379>
?
?
?
getrange
?
获取key的value值的子字符串。
?
127.0.0.1:6379> get key5
?
"lijie@lampbrother"
?
127.0.0.1:6379> getrange key5 3 10
?
"ie@lampb"
?
127.0.0.1:6379>
?
?
?
mget (批量获取)
?
一次获取多个key的值,如果对应key不存在,则对应返回nil.
?
127.0.0.1:6379> mget key1 key2 key3 key4 key5 key6
?
1) "lijie1"
?
2) "lijie2"