Chinaunix首页 | 论坛 | 博客
  • 博客访问: 873718
  • 博文数量: 72
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1693
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-04 15:53
个人简介

主要从事Linux,云原生架构改造,服务网格,ELK,python,golang等相关技术。

文章分类

全部博文(72)

文章存档

2015年(52)

2014年(20)

分类: NOSQL

2015-06-04 17:25:36

Strings类型及操作

String是简单的类型,一个key对应一个value,string类型是二进制安全的。Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。

Set

设置key对应的值为string类型的value

例如:我们添加一个name=hy的键值对

127.0.0.1:6379> set name hy                

OK

127.0.0.1:6379> get name        

"hy"    

127.0.0.1:6379> set name lanmp        我们重新覆盖,会看到设置成功,再使用get发现值已经变了

OK

127.0.0.1:6379> get name                    是因为一个key对应一个value

"lanmp"

 

Setnx

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

 

例如:我们添加一个name=hy_new的键值对。

127.0.0.1:6379> setnx name hy_new        这时如果key存在则返回0,不更新

(integer) 0

127.0.0.1:6379> get name

"lanmp"

127.0.0.1:6379> setnx age 23                    如果不存在则返回1,并设置

(integer) 1

 

Setex

设置key对应的值为string类型的value,并指定此键值对应的有效期。

例如:我们添加一个haircolor=red的键值对,并且指定有效期为10秒

127.0.0.1:6379> setex haircolor 10 red

OK

127.0.0.1:6379> get haircolor

"red"

127.0.0.1:6379> get haircolor

"red"

127.0.0.1:6379> get haircolor        10秒后,我们会看到它的值为空,因为在10秒后这个键会失效

(nil)

127.0.0.1:6379> setnx haircolor red        可以设置,证明我们前面的设置已经失效了

(integer) 1

127.0.0.1:6379> get haircolor

"red"

 

Setrange

设置指定key的value值的子字符串

例如:我们希望将hy的163邮箱替换为qq邮箱

127.0.0.1:6379> set email yhai_ying@163.com

OK

127.0.0.1:6379> get email

"yhai_ying@163.com"

127.0.0.1:6379> setrange email 10 qq.com

(integer) 17

127.0.0.1:6379> get email

"yhai_ying@qq.comm" 替换完成后我们会发现最后面的一个m还存在,说明我们的替换是对应字符的替换

 

mset

一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置。

127.0.0.1:6379> mset key1 hy1 key2 hy2 key3 hy3

OK

127.0.0.1:6379> get key1

"hy1"

127.0.0.1:6379> get key2

"hy2"

127.0.0.1:6379> get key3

"hy3"

 

msetnx

一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key。

127.0.0.1:6379> msetnx key1 hello hy4 hy4 这里由于key1已经被设定了

(integer) 0 所以其他的值设定也会失败,返回0

127.0.0.1:6379> msetnx key6 hello hy4 hy4 我们设置不存在的值,就会返回1

(integer) 1

get

获取key对应的string值,如果key不存在返回nil。

 

getset

设置key的值,并返回key的旧值。

127.0.0.1:6379> getset key1 30

"hy1"

 

getrange

获取key的value值得子字符串。

127.0.0.1:6379> get email

"yhai_ying@qq.comm"

127.0.0.1:6379> getrange email 0 5

"yhai_y"

 

mget

一次获取多个key值,如果对应key不存在则对应返回nil。

127.0.0.1:6379> mget key1 key2 key3 key4 key5

1) "30"

2) "hy2"

3) "hy3"

4) "7"

5) (nil)

 

incr

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

127.0.0.1:6379> incr key4

(integer) 8

127.0.0.1:6379> incr key4

(integer) 9

127.0.0.1:6379> get key4

"9"

 

incrby

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

127.0.0.1:6379> incrby key4 5

(integer) 14

127.0.0.1:6379> get key4

"14"

127.0.0.1:6379> incrby key4 -5

(integer) 9

127.0.0.1:6379> get key4

"9"

 

decr 对应着上面的incr来看,不过它是自减的

多key的值做减减操作。

127.0.0.1:6379> decr key4

(integer) 8

127.0.0.1:6379> get key4

"8"

 

dcrby 对应着上面的incrby来看,不过它是自减指定减的值

同decr类似,减指定值。

127.0.0.1:6379> decrby key4  3

(integer) 5

 

append

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

127.0.0.1:6379> set name yhai_ying@163.com

OK

127.0.0.1:6379> get name

"yhai_ying@163.com"

127.0.0.1:6379> append name .cn

(integer) 20

127.0.0.1:6379> get name

"yhai_ying@163.com.cn"

 

strlen

取指定key的value值得长度。

127.0.0.1:6379> strlen name

(integer) 20

 

 

Hashes类型

Hashes类型及操作

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

 

hset

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

127.0.0.1:6379> hset user:001 name hy

(integer) 1

127.0.0.1:6379> hget user:001 name

"hy"

 

Hsetnx

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

127.0.0.1:6379> hsetnx user:002 name hello

(integer) 1

127.0.0.1:6379> hsetnx user:002 name hy_new

(integer) 0

127.0.0.1:6379> hget user:002 name

"hello"

 

hmset

同样设置hash的多个field。

127.0.0.1:6379> hmset myhash field1 "hello1" field2 "hello2"

 

127.0.0.1:6379> hmset user:003 name hy age 24 sex 1

OK

127.0.0.1:6379> hget user:003 name

"hy"

127.0.0.1:6379> hget user:003 age

"24"

127.0.0.1:6379> hget user:003 sex

"1"

 

Hmget

获取全部指定的hash field。

127.0.0.1:6379> hmget user:003 name age sex

1) "hy"

2) "24"

3) "1"

 

Hincrby

指定的hash field加上给定值。

127.0.0.1:6379> hincrby user:003 age -8

(integer) 16

 

Hexists

测试指定field是否存在

127.0.0.1:6379> hexists user:003 age

(integer) 1

127.0.0.1:6379> hexists user:003 name

(integer) 1

127.0.0.1:6379> hexists user:003 sex

(integer) 1

 

hlen

返回指定hash的field数量。

127.0.0.1:6379> hlen user:003

(integer) 3

127.0.0.1:6379> hlen user:001

(integer) 1

 

hdel

删除指定hash的field。

127.0.0.1:6379> hdel user:003 age

(integer) 1

127.0.0.1:6379> hget user:003 age

(nil)

 

hkeys

返回hash的所有field。

127.0.0.1:6379> hkeys user:003

1) "name"

2) "sex"

 

hvals

返回hash的所有value。

127.0.0.1:6379> hvals myhash

127.0.0.1:6379> hvals user:003

1) "hy"

2) "1"

 

hgetall

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

127.0.0.1:6379> hgetall user:003

1) "name"

2) "hy"

3) "sex"

4) "1"

 

 

阅读(3052) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~