Redis教程string字符串数据类型

2次阅读

共计 4508 个字符,预计需要花费 12 分钟才能阅读完成。

注:如有侵权,请分割删除

字符串类型:

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 设置失败。值的类型有误或者命令语法有误返回谬误。
正文完
 0