Redis中字符串string数据类型用法详解

本文详细介绍了Redis中的字符串类型,包括设置键值、设置带过期时间的键值、判断键是否存在并设置、批量设置键值、追加值、获取旧值并设置新值、获取与更新数值、删除键值等操作,适用于计数器、对象缓存等多种应用场景。
摘要由CSDN通过智能技术生成

        字符串类型是 Redis 中最为基础的数据存储类型,一个key对应一个value。它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。

        value 除了是字符串以外还可以是数字。

        使用场景:计数器,统计多单位的数量,粉丝数,对象缓存存储,分布式锁等

1、保存

        如果设置的键不存在则为添加,如果设置的键已经存在则修改。

1.1 设置键值set

        用于设置给定 key 的值。如果 key 已经存储其他值, set 就重写旧值,且无视类型。

set key value

设置键为name值为school的数据:  【key:value】

set name school

1.2 设置键值及过期时间,以秒为单位    【expire:过期】【ttl aaa : 查看有效期剩余时间】

        给指定的 key 设置值及time 秒的过期时间。如果 key 已经存在, setex命令将会替换旧的值,并设置过期时间。

setex key seconds value

设置键为aaa值为aa过期时间为10秒的数据:

setex aaa 10 aa

1.3 setnx

        只有在key不存在时设置key的值。

setnx key value

1.4 设置多个键值   【multiple:多样的,多重的】

        同时设置一个或多个 key-value 。

mset key1 value1 key2 value2 ...

设置键为a1值为python、键为a2值为java、键为a3值为c

mset a1 python a2 java a3 c

1.5 追加值

        将给定的value追加到key原值末尾。

append key value

向键为a1中追加值 iloveyou:

append a1 iloveyou

注意:

  • 如果 key 已经存在并且是一个字符串, append 命令将 value 追加到 key 原来的值的末尾。
  • 如果 key 不存在, append 就简单地将给定 key 设为 value ,就像执行 set key value 一样。 

1.6 getset操作

        将给定key值设为value,并返回key的旧值(old value),简单一句话(先get然后立即set)。

getset key value

2、获取

2.1 获取get:根据键获取值,如果不存在此键则返回nil

        用于获取指定 key 的值。如果 key 不存在,返回 nil 。

get key

获取键name的值:

get name

2.2 根据多个键获取多个值

        返回所有(一个或多个)给定 key 的值。

mget key1 key2 ...

注意:

  • 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。 

2.3 获取字符串长度strlen

获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。

strlen name

2.4 将键的值加1 (必须是数值型的字符串) 

        将 key 中储存的数字值增一。

incr age
# 因为Redis中不存在k1,所以先初始化为0,再递增,值为1
127.0.0.1:6379> incr k1
(integer) 1
# incr k1 存在k1,递增后k1的值为2
127.0.0.1:6379> incr k1
(integer) 2
# 如果value不是数字就会报错
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> INCR k2
(error) ERR value is not an integer or out of range

注意:

  • 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incr 操作。
  • 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。 

2.5 将键的值减1 (必须是数值型的字符串) 

        将 key 中储存的数字值减一。

decr age
127.0.0.1:6379> decr k1
(integer) 1
127.0.0.1:6379> decr k1
(integer) 0
127.0.0.1:6379> decr k1
(integer) -1
127.0.0.1:6379> decr k1
(integer) -2
#如果
set k2 v2
decr k2 因为k2不为数值,Redis返回一个错误

注意

  • 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 decr 操作。
  • 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。 

2.6 将键的值加N (必须是数值型的字符串) 

        将key存储的数字值按照step进行增减。

incrby age 5

注意

  • 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incrby/decrby 命令。
  • 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。 

2.7 将键的值减N (必须是数值型的字符串) 

        将key存储的数字值按照step进行增减。

decrby age 5

注意

  • 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incrby/decrby 命令。
  • 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。 

2.8 获取键的范围位置值

        获取指定区间范围内的值,类似between........and 的关系。

getrange key start end

2.9 键所对应的值的下标某个位置开始向后覆盖字符串

setrange key offset value

3、删除

3.1 删除键及对应的值

del key1 key2 ...

删除键a2、a3

del a2 a3

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值