注:如有侵权,请联系删除

字符串类型:

String类型是Redis能与键关联的最简单的数据类型,它是Memcached当中仅有的数据类型,因此可以很快地被初学者学习。
Redis的Key名称也是一个字符串,当我们使用字符串类型作为其对应的值时,我们可以根据Key名称来查找映射对应的值。
Redis字符串是二进制安全的,这意味着一个Redis字符串能包含任意类型的数据,例如: 一张JPEG格式的图片或者一个序列化的Ruby对象。
一个字符串类型的值最多能存储512MB的内容。

应用场景:

高速缓存HTML片段或者页面;
高速缓存关系型数据库查询的数据结果;
高速缓存会话控制数据;
分布式锁;
防止重复提交;
存储设置固定格式的字符串序列(例如:时间序列)
统计网站访问者数量;
每天注册用户数;
限制API在某一时段的访问次数;
用户签到;
统计活跃用户;
用户在线状态。

Redis字符串类型的基本命令

  • Redis字符串类型键的设置
  • Redis字符串类型键的查询
  • Redis字符串类型键的计数操作
  • Redis字符串类型键的二进制操作

Redis字符串类型键的设置

项目案例:
案例一:高速缓存(HTML / DATA / SESSION)
案例二:分布式锁
案例三:防止重复提交
案例四:存储设置固定格式的字符串序列(例如:时间序列)

命令名称:set

语法: set key value [EX seconds] [PX milliseconds] [NX|XX]
功能:
给一个key添加字符串类型的值,如果该key已经存在,值会被新值覆盖,不论是什么类型的key。SET设置后的键,之前的生存时间会被丢弃。
选项:
EX seconds(生存时间:秒) / PX milliseconds(生存时间:毫秒) / NX(仅在键不存在时设置) / XX(仅在键存在时设置)
返回值:
如果设置成功,返回OK。
如果设置失败,返回nil。

命令名称:mset

语法: mset key value [key value ...]
功能:
同时设置多个key,如果key存在会覆盖。
mset 是原子的,所有键会同时设置成功或者失败。
返回值:
成功返回ok

命令名称:setex

语法: setex key seconds value
功能:
给一个键设置为字符串类型,并指定生存时间(单位:秒)。
该命令是原子的,如果设置失败或者指定生存时间失败,会恢复初始状态。
返回值:
如果设置成功,返回OK。
如果设置失败,返回错误信息。


命令名称:psetex

语法: psetex key milliseconds value
功能:
给一个键设置为字符串类型,并指定生存时间(单位:毫秒)。
该命令是原子的,如果设置失败或者指定生存时间失败,会恢复初始状态。
返回值:
如果设置成功,返回OK。
如果设置失败,返回错误信息。

命令名称:setnx

语法: setnx key value
功能:
如果key不存在,将其设置为字符串类型。
返回值:
如果设置成功,返回1。
如果设置失败,返回0。

命令名称:msetnx

语法: msetnx key value [key value ...]
功能:
同时设置多个key,如果其中一个key存在则设置失败,不考虑其他键是否存在。
msetnx 是原子的,所有键会同时设置成功或者失败。
返回值:
如果所有键设置成功返回1,如果所有键设置失败返回0。


命令名称:setrange

语法: setrange key offset value
功能:
修改或者设置一个键的字符串类型值的内容。
如果键不存在,就设置一个新的,并且补充offset个NULL,再加入value,换句话说,值为 “offset个NULL+value”。
如果键已经存在,从该键值offset处开始插入value,如果offset的值大于该键字符串长度,用NULL补充到该长度,再末尾插入value。
返回:成功返回字符串长度,失败返回错误信息
注意事项:
offset最大值229 -1(536870911)。


命令名称:append

语法: append  key value
功能:
如果key存在,则在后面追加value的内容。
如果key不存在,会创建一个key,并设置其值为空字符串,并在后追加value的内容。
返回:
追加成功以后的字符串长度。


Redis字符串类型键的查询

命令名称:get

语法: get key
功能:查询key的值。
返回值:
如果键不存在,返回nil。
如果key不是String类型,返回错误信息。

命令名称:mget

语法: mget key [key …]
功能:查询所有key的值。
返回值:
列出所有键的值,绝不会执行失败,如果键是String类型,返回其值,如果键不存在或者不是String类型,返回 nil。

命令名称:getrange

语法: getrange key start end
功能:查询一个字符串的子串,子串的内容取决于start和end(两个参数都必需),start和end可以为负数,-1代表最后一个字符,-2代表倒数第二个字符。
返回值:
如果key存在,返回字符串的子串内容,如果key不存在,返回空字符串,如果key不是String类型,返回错误信息。


命令名称:strlen

语法: strlen key
功能:返回key的字符串长度。
返回值:字符串长度,如果key不存在返回0,如果不是字符串类型,返回错误信息。


命令名称:getset

语法: getset key value
功能:原子地给一个key设置value并且将旧值返回。
返回值:如果key不是字符串类型,返回一个错误。
应用场景:获取计数器并且重置为0。





Redis字符串类型键的计数操作

项目案例:
案例一:统计网站访问者数量
案例二:每天注册用户数
案例三:限制API在某一时段的访问次数

命令名称:incr

语法: incr key
功能:将 key 中储存的数字值增一,如果 key 不存在,那么 key 的值会先被初始化为 0,然后再执行 incr操作。本操作的值限制在 64 位(bit)有符号数字表示之内。Key的值必须是整型。
返回值:
如果值包含错误的类型,或字符串类型的值不能表示为数字,返回一个错误 / 如果执行成功,返回执行 incr 命令之后 key 的值。

命令名称:incrby

语法: incrby key increment 
功能:将 key 所储存的值加上增量 increment,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incrby命令。本操作的值限制在 64 位(bit)有符号数字表示之内。Key的值必须是整型。
返回值:
如果值包含错误的类型,或字符串类型的值不能表示为数字,返回一个错误 / 如果执行成功,返回执行 INCRBY 命令之后 key 的值。



命令名称:incrbyfloat

语法: incrbyfloat key increment 
功能:
为 key 中所储存的值加上浮点数增量 increment,如果 key 不存在,那么 incrbyfloat  会先将 key 的值设为 0 ,再执行加法操作。
可以使用科学计数法。
返回值:
执行成功返回更新以后的值。


命令名称:decr

语法: decr key
功能:将 key 中储存的数字值减一,如果 key 不存在,那么 key 的值会先被初始化为 0,然后再执行 DECR 操作。本操作的值限制在 64 位(bit)有符号数字表示之内。Key的值必须是整型。
返回值:
如果值包含错误的类型,或字符串类型的值不能表示为数字,返回一个错误 / 如果执行成功,返回执行 decr命令之后 key 的值。

命令名称:decrby

语法: decrby key increment 
功能:将 key 所储存的值加上增量 decrement,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 decrby 命令。本操作的值限制在 64 位(bit)有符号数字表示之内。Key的值必须是整型。
返回值:
如果值包含错误的类型,或字符串类型的值不能表示为数字,返回一个错误 / 如果执行成功,返回执行 decrby命令之后 key 的值。







Redis字符串类型键的二进制操作

项目案例:
案例一:用户签到
案例二:统计活跃用户
案例三:用户在线状态

命令名称:setbit

语法: setbit key offset value
功能:
对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit),位的设置或清除取决于 value 参数,可以是 0 也可以是 1 。
字符串会进行伸展(grown)以确保它可以将 value 保存在指定的偏移量上。当字符串值进行伸展时,空白位置以 0 填充。offset 参数必须大于或等于 0 ,小于 2^32 (bit 映射被限制在 512 MB 之内)。
返回值:
当 key 不存在时,自动生成一个新的字符串值。
指定偏移量原来储存的位。

命令名称:getbit

语法: getbit key offset
功能:
对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
返回值:
当 offset 比字符串值的长度大,或者 key 不存在时,返回 0 。
字符串值指定偏移量上的位(bit)。

命令名称:bitcount

语法: bitcount key [start] [end]
功能:
计算给定字符串中,被设置为 1 的比特位的数量。
一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。
返回值:
不存在的 key 被当成是空字符串来处理,因此对一个不存在的 key 进行 BITCOUNT 操作,结果为 0 / 被设置为 1 的位的数量。


命令名称:bitop

语法: bitop operation destkey key [key ...]
功能:
对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。
OPERATION:
可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种。
除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入。
注意:
当 bitop 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0 。空的 key 也被看作是包含 0 的字符串序列。
返回值:
保存到 destkey 的字符串的长度,和输入 key 中最长的字符串长度相等。


命令名称:bitpos

语法: bitpos key bit [start] [end]
功能:
返回字符串里面第一个被设置为1或者0的bit位。
返回值:
命令返回字符串里面第一个被设置为1或者0的bit位。
如果我们在空字符串或者0字节的字符串里面查找bit为1的内容,那么结果将返回-1。


命令名称:bitfield

语法: bitfield key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]
功能:
本命令会把Redis字符串当作位数组,并能对变长位宽和任意未字节对齐的指定整型位域进行寻址。在实践中,可以使用该命令对一个有符号的5位整型数的1234位设置指定值,也可以对一个31位无符号整型数的4567位进行取值。类似地,在对指定的整数进行自增和自减操作,本命令可以提供有保证的、可配置的上溢和下溢处理操作。
返回值:
get 当前偏移位置所在的值。
set 当前偏移量的旧值。
incrby 当前偏移量的旧值。
nil 设置失败。
值的类型有误或者命令语法有误返回错误。



特伦姝
44 声望0 粉丝

不务正业的搬运工,分享一些技术指北。。。