字符串篇
Redis
字符串(Strings)
最通用的构建模块之一,是一种二进制安全数据结构。字符串是一种字节(或字)数组数据结构,使用某种字符编码存储元素序列,通常是字符。它可以存储任何数据--字符串、整数、浮点数值、JPEG 图像、序列化的Ruby对象或其他任何你希望它携带的数据。可以对整个字符串或部分字符串进行操作,也可以对整数和浮点数进行递增或递减。
场景
字符串结构使用最为普遍了,几乎可以适应于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
。
编辑此页面