频道栏目
首页 > 数据库 > SQL Server > 正文
02_NoSQL数据库之Redis数据库:string类型和hash类型
2015-02-13 09:57:32         来源:涂作权的博客  
收藏   我要投稿



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"

 

3) (nil)

 

4) "lampbrother.net"

 

5) "lijie@lampbrother"

 

6) "30"

 

127.0.0.1:6379>

 

 

 

incr

 

对key的值做加加操作,并返回新的值。

 

 

 

incrby

 

同incr类似,加指定值,key不存在时候会设置key,并认为原来的value是0.

 

127.0.0.1:6379> decr key6

 

(integer) -1

 

127.0.0.1:6379> decr key6

 

(integer) -2

 

127.0.0.1:6379> incr key6

 

(integer) -1

 

127.0.0.1:6379> incr key6

 

(integer) 0

 

127.0.0.1:6379> incrby key6 +5

 

(integer) 5

 

127.0.0.1:6379> incrby key +5

 

(integer) 5

 

127.0.0.1:6379> incrby key6 +5

 

(integer) 10

 

127.0.0.1:6379> get key6

 

"10"

 

127.0.0.1:6379>

 

 

 

decr

 

对key的值做减减操作

 

decrby

 

同decr类似,减指定值。

 

127.0.0.1:6379>decr key6

 

(integer)37

 

127.0.0.1:6379>decr key6

 

(integer)36

 

127.0.0.1:6379>decrby key6 -3

 

(integer)33

 

 

 

append

 

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

 

append name@li-jie.me

 

127.0.0.1:6379> get name

 

"totobrother"

 

127.0.0.1:6379> append name @li-jie.me

 

(integer) 21

 

127.0.0.1:6379> get name

 

"totobrother@li-jie.me"

 

127.0.0.1:6379>

 

 

 

strlen(查看字符串的长度)

 

取指定key的value值的长度。

 

127.0.0.1:6379> get name

 

"totobrother@li-jie.me"

 

127.0.0.1:6379> strlen name

 

(integer) 21

 

127.0.0.1:6379>

 

 

 

 

 

hashes类型

 

hashes类型及操作

 

Redis hash是一个string类型的field和value的映射表。它的添加、删除操作都是0(1)(平均)。hash特别适合用于存储对象。相较于将对象的每个字段存成当个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。

 

 

 

hset(设置hash表)

 

设置hash field为指定值,如果key不存在,则先创建。

 

hset hash表名 key值 value值

 

127.0.0.1:6379> hset myhash field1 hello

 

(integer) 1

 

127.0.0.1:6379> hset user:001 name lijie

 

(integer) 1

 

通过hget获得值,hget hash表 名称

 

127.0.0.1:6379> hget user:001 name

 

"lijie"

 

127.0.0.1:6379>

 

 

 

hsetnx

 

设置hash field为指定值,如果key不存在,则先创建。如果存在返回0.

 

127.0.0.1:6379> hsetnx user:002 name lamp

 

(integer) 1

 

127.0.0.1:6379> hget user:002 name

 

"lamp"

 

127.0.0.1:6379> hsetnx user:002 name lampbrother //如果已经存在,再设置时设置不成功

 

(integer) 0

 

127.0.0.1:6379> hget user:002 name

 

"lamp"

 

127.0.0.1:6379>

 

 

 

hmset

 

同时设置hash的多个field

 

hmget:获取全部指定的hash field

 

127.0.0.1:6379> hsetnx user:002 name lampbrother

 

(integer) 0

 

127.0.0.1:6379> hget user:002 name

 

"lamp"

 

127.0.0.1:6379> hmset user:003 name lijie age 20 sex 1

 

OK

 

127.0.0.1:6379> hget user:003 name

 

"lijie"

 

127.0.0.1:6379> hget user:003 age

 

"20"

 

127.0.0.1:6379> hget user:003 sex

 

"1"

 

127.0.0.1:6379> hmget user:003 name age sex

 

1) "lijie"

 

2) "20"

 

3) "1"

 

127.0.0.1:6379>

 

 

 

hincrby

 

指定的hash field加上给定值。对某一个键进行自增。

 

 

 

 

 

hexists

 

测试指定field是否存在。

 

127.0.0.1:6379> hexists user:003 name

 

(integer) 1 //如果指定字段存在,则返回1,否则返回0

 

 

 

hlen

 

返回指定hash的field数量。

 

127.0.0.1:6379> hlen myhash

 

(integer) 1

 

127.0.0.1:6379> hlen user:001

 

(integer) 1

 

127.0.0.1:6379> hlen user:003

 

(integer) 3

 

127.0.0.1:6379>

 

 

 

hdel

 

删除指定hash的field字段

 

 

 

 

 

hkeys:返回hash的所有field

 

127.0.0.1:6379> hkeys user:003

 

1) "name"

 

2) "age"

 

3) "sex"

 

127.0.0.1:6379>

 

 

 

hvals:返回hash的所有value.

 

127.0.0.1:6379> hkeys user:003

 

1) "name"

 

2) "age"

 

3) "sex"

 

127.0.0.1:6379> hvals user:001

 

1) "lijie"

 

127.0.0.1:6379> hvals user:002

 

1) "lamp"

 

127.0.0.1:6379> hvals user:003

 

1) "lijie"

 

2) "20"

 

3) "1"

 

127.0.0.1:6379>

 

 

 

hgetall

 

获取某个hash中全部的field及value.

 

点击复制链接 与好友分享!回本站首页
相关TAG标签 类型 数据库
上一篇:SQL小助手——SQLPrompt
下一篇:锋利的SQL2014:基于窗口的偏移计算
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站