redis数据类型String命令

String类型

SET key value 赋值

127.0.0.1:6379> set test 123
OK

GET key 取值

127.0.0.1:6379> get test
"123“

GETSET key value 取值并赋值

127.0.0.1:6379> getset s2 222
"111"
127.0.0.1:6379> get s2
"222"

DEL key 删除

127.0.0.1:6379> del test
(integer) 1

incr key 递增数字

当存储的字符串是整数时,Redis提供了一个实用的命令INCR,其作用是让当前键值递增,并返回递增后的值。

127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incr num
(integer) 3

INCRBY key increment 增加指定的整数

127.0.0.1:6379> incrby num 2
(integer) 5
127.0.0.1:6379> incrby num 2
(integer) 7
127.0.0.1:6379> incrby num 2
(integer) 9

DECR key 递减数值

127.0.0.1:6379> decr num
(integer) 9
127.0.0.1:6379> decr num
(integer) 8

DECRBY key decrement 减少指定的整数

127.0.0.1:6379> decr num
(integer) 6
127.0.0.1:6379> decr num
(integer) 5
127.0.0.1:6379> decrby num 3
(integer) 2
127.0.0.1:6379> decrby num 3
(integer) -1

APPEND key value 向尾部追加值

127.0.0.1:6379> set str hello
OK
127.0.0.1:6379> append str " world!"
(integer) 12
127.0.0.1:6379> get str 
"hello world!"

STRLEN key 获取字符串长度

127.0.0.1:6379> strlen str 
(integer) 0
127.0.0.1:6379> set str hello
OK
127.0.0.1:6379> strlen str 
(integer) 5

MSET key value [key value …] 同时设置多个值

127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK

MGET key [key …] 同时取多个值

127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> mget k1 k3
1) "v1"
2) "v3"

String应用

自增主键: 商品编号、订单号采用string的递增数字特性生成。

定义商品编号key:items:id
192.168.101.3:7003> INCR items:id
(integer) 2
192.168.101.3:7003> INCR items:id
(integer) 3

String存在的问题

假设有User对象以JSON序列化的形式存储到Redis中,User对象有id,username、password、age、name等属性,存储的过程如下: 
保存、更新: 
User对象  ->  json(string)  ->  redis 
如果在业务上只是更新age属性,其他的属性并不做更新我应该怎么做呢? 
如果仍然采用上边的方法在传输、处理时会造成资源浪费,下边讲的hash可以很好的解决这个问题。