字符串篇

Redis字符串(Strings)最通用的构建模块之一,是一种二进制安全数据结构。字符串是一种字节(或字)数组数据结构,使用某种字符编码存储元素序列,通常是字符。它可以存储任何数据--字符串、整数、浮点数值、JPEG 图像、序列化的Ruby对象或其他任何你希望它携带的数据。可以对整个字符串或部分字符串进行操作,也可以对整数和浮点数进行递增或递减。

redis-string

场景

字符串结构使用最为普遍了,几乎可以适应于95%的开发场景。

缓存

作为一个高性能的缓存服务器,Redis的字符串结构常用于缓存数据,可以将经常访问的数据存储在Redis中,以提高数据访问速度,减少对数据库等后端存储的访问压力。可以序列化实体的都可以缓存。


$redis->set('cached', 'cache data');

计数器

字符串结构可以用于实现计数器功能,例如网站的访问量、用户的登录次数、文章的点赞数等,通过对字符串的自增(INCR)操作,可以方便地实现计数功能。这种功能hash也可以实现,具体还是根据业务来选用那种方式。


    $redis->incr('key1'); // 加1 
    $redis->incrBy('key1', 10); // 加10

hash的key也有这功能.

分布式锁

可以使用Redis的字符串结构来实现分布式锁,通过SETNX(SET if Not exists)命令来尝试获取锁,利用锁的过期时间或者通过DEL命令主动释放锁来防止死锁。

// 防止用户并发下单
if (!$redis->setNx('goods:lock:uid', 1)) {
    return false;
}

会话管理

可以将用户的会话信息存储在Redis的字符串结构中,只需要将session信息序列化字符串即可,通过设置合适的过期时间可以实现会话的自动过期和管理。hash也可以实现此功能,但是大部分框架都以字符串结构存储。

$redis->set('session:1', serialize($sessioin));

其他数据结构也可以实现字符串的功能,可以根据业务选择适合的实现方法。

协作

如果你有更多的场景使用用例,可以通过github提交pr请求。有问题可以开issue编辑此页面