strings  字符串命令

所有的key 为string 类型的key 及其value 进行操作

 

set  key value                  #不存在就创建/存在就更改。在 Redis 2.6.12 以前版本, SET 命令总是返回 OK 。从 Redis 2.6.12 版本开始,SET在设置操作成功完成时,才返回 OK 。

 

get key                       #Redis Get 命令用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。

 

getrange                       #命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在    内)

sprinboot使用redis获取hash不存在的属性 redis获取字符串_redis

sprinboot使用redis获取hash不存在的属性 redis获取字符串_Redis_02

redis 127.0.0.1:6379> SET mykey "This is my test key"
OK
redis 127.0.0.1:6379> GETRANGE mykey 0 3
"This"
redis 127.0.0.1:6379> GETRANGE mykey 0 -1
"This is my test key"

View Code

 

getset key value                 #将给定 key 的值设为 value ,并返回 key 的旧值(old value)

 

setbit key  offset 0/1

 

get key  offset                  # 对不存在的 key 或者不存在的 offset 进行 GETBIT, 返回 0,对已存在的 offset 进行 GETBIT是0返回0是1返回1。

解析如下:

sprinboot使用redis获取hash不存在的属性 redis获取字符串_redis

sprinboot使用redis获取hash不存在的属性 redis获取字符串_Redis_02

我们在登陆某些博客网站或者视频网站的时候,网站往往会记录我们是否阅读了某篇文章,或者是观看了某个视频。

如果用传统的mysql数据库实现,如果用户数量多,文章和视频也多的情况下,那么则会给数据库带来很大的压力。

而用Redis的GETBIT和SETBIT则会简单得多。
我们以视频为例,我们用bitmap来记录用户们是否已经观看了某一个视频,一个视频对应一个bitmap。例如

1
2
key:   video:1201
value: 000000...0000
key以视频英文名video+冒号+id标记。
value就是一个bitmap。一位(bit)有两种可能,0或者1。0代表未看,1代表已经看过了。
而位置(offset)代表的就是user id。例如第200位就代表user_id为200的用户是否观看过id为1201的视频。

设置
1
2
3
4
# SETBIT key offset value
 
SET video:1201 200 1
# 上面的命令就是设置ID为200的用户,已经看过了ID为1201的视频。
查询
1
2
3
# GETBIT key offset
GETBIT video:1201 200
# 上面的命令就是查询ID为200的用户是否观看了ID为1201的视频
当然您也可以一个用户对应一个bitmap,bitmap中的位代表一个视频是否已经被观看。

另外文章中也将到目前非常流行的打卡或者是登陆记录也可以用相似的设计实现。
例如用一个bitmap记录所有用户的登陆情况,bitmap中的一位代表一个用户当天是否有登陆,0代表没登陆,1代表有登陆。
每天生成一个bitmap。

通过统计多天bitmap就可以实现统计活跃用户之类的操作了。

View Code

 

mget   key1[key2...]               #获取所有(一个或多个)给定 key 的值。

 

setex  key  seconds  value              #命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

 

setnx(SET if Not eXists)            #命令在指定的 key 不存在时,为 key 设置指定的值。成功返回1,失败返回0。只有不存在才能成功

 

setrange key_name offset value         #命令用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。

sprinboot使用redis获取hash不存在的属性 redis获取字符串_redis

sprinboot使用redis获取hash不存在的属性 redis获取字符串_Redis_02

可用版本
>= 2.2.0

返回值
被修改后的字符串长度。

实例
redis 127.0.0.1:6379> SET key1 "Hello World"
OK
redis 127.0.0.1:6379> SETRANGE key1 6 "Redis"
(integer) 11
redis 127.0.0.1:6379> GET key1
"Hello Redis"

View Code

 

strlen  key_name                 #返回key存储的字符串的长度,字符串值的长度。 当 key 不存在时,返回 0。

 

mset  key1 value1 key2 value2 .. keyN valueN

 

mysetnx  key1 value1 key2 value2 .. keyN valueN

 

psetex key1 seconds_in_ms  value1

 

Incr                      # 命令将 key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。如果值     包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

sprinboot使用redis获取hash不存在的属性 redis获取字符串_redis

sprinboot使用redis获取hash不存在的属性 redis获取字符串_Redis_02

语法
redis Incr 命令基本语法如下:

redis 127.0.0.1:6379> INCR KEY_NAME 
可用版本
>= 1.0.0

返回值
执行 INCR 命令之后 key 的值。

实例
redis> SET page_view 20
OK

redis> INCR page_view
(integer) 21

redis> GET page_view    # 数字值在 Redis 中以字符串的形式保存
"21"

View Code

 

incrby  key increament             #对key 存储的数字值增加给定的增量,其他同incr

 

incrbyfloat key_name  incr_amount         #对key 存储的数字值增加给定的浮点数增量,其他同incr

 

decr                     #对key 存储的数字减一,其他同incr

 

decrby key decrement             # 所储存的值减去给定的减量值(decrement) 。

 

append key_name new_value