Redis基本数据类型(一)- String(字符串)

1.简介

  • redis最基本的数据类型,一个key对应一个value。
  • 值可以是任何种类的字符串(包括二进制数据),值的长度不能超过512 MB。
  • 内容通常采用字符串的形式存储,如果字符串以整数形式展示,可以作为数字操作使用

2.应用场景

  • 计算器:文章访问量,每日用户访问量,阅读数(incr命令  自增1)
  • 单值缓存:缓存商品库存,key=商品id,value=库存数量
  • 对象缓存:set 存储用户信息,key=userid value=json格式数据,适用于数据不断变化的应用场景,如用户微信余额,存取方便,效率高。(对象一般更推荐采用Hash缓存,通过field属性更方便拿到对象指定属性
  • 分布式锁:在一个集群环境下,多个web应用时对同一个商品进行抢购和减库存操作时,
    可能出现超卖时会用到分布式锁,SETNX命令(SET if Not eXists)。功能:当且仅当 key 不存在,将 key 的值设为 value ,并返回1;若给定的 key 已经存在,则 SETNX 不做任何动作,并返回0。
  • 127.0.0.1:6379> SETNX block 10000     //返回1代表获取锁成功,返回0代表获取锁失败
    (integer) 1
    (1.26s)
    .......                               //执行业务操作                 
    127.0.0.1:6379> DEL block 10000       //执行完业务删除锁
    (integer) 0
    127.0.0.1:6379> SET block 10000 ex 10 nx //防止程序意外中止导致死锁
    
    SET key value [EX seconds] [PX milliseconds] [NX|XX]
    将字符串值 value 关联到 key 。如果 key 已经持有其他值, SET 就覆写旧值,无视类型。对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。
    
        EX second :设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX key second value 。
        PX millisecond :设置键的过期时间为 millisecond 毫秒。 SET key value PX millisecond 效果等同于 PSETEX key millisecond value 。
        NX :只在键不存在时,才对键进行设置操作。 SET key value NX 效果等同于 SETNX key value 。
        XX :只在键已经存在时,才对键进行设置操作。
  • 分布式系统全局序列号:一般数据库表的主键用自增长序列号,如果后端做了分库分表,

    数据库自带的auto_increment就不适用了,可以使用redis的自增,由于Redis为单进程单线程模式, 采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。
    incr orderId redis压力大
    incr orderId 1000  提升性能,降低redis压力

    假设有3台机器访问redis,我们可以利用redis单线程的特点 incrby orderid 1000,让每台每次拿1000,0-1000,1001-2000,2001~3000,拿完之后再各自慢慢处理这1000的容量

3.基本语法

Reids基本数据类型-string基础命令

set key value

在当前的数据库中设置一个字符串的key

get key

在当前的数据库中获取指定的key的值

getset key value

把指定的key的值设置为value并返回原来的值

strlen key

返回指定key对应的值的长度

mget k1 k2 k3 

获取多个key对应的值

del k1

删除key对应的值

mset k1 v1 k1 v1 

一次性设置多个key的值

flushall

清空当前连接的redis数据库中的所有k-v

incr key

让指定的key对应的值自增一

incrby key 20

指定的key的value值加上指定的增量值

decr key

自减1

decrby key 20

将指定的key对应的value减去指定的值

append key value1

将指定的value1值追加到指定的key的原来的value后面

setex key min value

设定一个key并指定过期时间,单位为秒

例:setex key 100 'xi\'an'

TTL key

返回-2当前的key是不存在的,-1表示key是永久的

getrange key start end返回从start到end的子串,从0开始
getbit key offset获取指定偏移量上的位(bit)。
setbit key offset value(0/1)

设置或者清空key的value(字符串)在offset处的bit值。这个由value(只能是0或者1)来决定。当key不存在的时候,就创建一个新的字符串value。要确保这个字符串大到在offset处有bit值。参数offset需要大于等于0,并且小于232(限制bitmap大小为512)。当key对应的字符串增大的时候,新增的部分bit值都是设置为0。

举例:将a变为b

我们知道 'a' 的ASCII码是 97。

我们通过SETBIT 命令'a' 变成 'b' 应该怎么变呢?其实也就是将 01100001 变成 01100010 (b的ASCII码是98),也就是将'a'中的offset 6从0变成1,将offset 7 从1变成0 。

setrange key offset value用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
psetex key mmilliseconds value给key设置一个以毫秒为单位的过期时间

注意:

1、incr 命令 必须是数值数值类型的数据,如果是一个字符串的值不能使用incr命令。

2、redis字符串中的值,特殊字符是需要处理的,支持转义的字符 \' 表示一个单引号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值