如何设计一个购物车

系统设计 , , ,
答案 未登陆时,新增产品放在本地浏览器的Cookie中。 登陆时,同步购物车数据到服务器,同步完成后删除本地Cookie。 已经登陆状态,新增产品直接添加到服务器。 对于服务器数据保存的位置,访问量不大就直接存储在MySQL,访问量大就以集合方式存储在Redis,速度快又能保证唯一。 因为Redis数据…

Redis持久化方式有哪几种?

Redis, 数据库
答案 Redis有两种持久化的方式: 快照方式(Snapshotting):生成RDB文件,RDB持久化方式会在一个特定的间隔保存那个时间点的一个数据快照。 追加文件方式(Append-only file):生成AOF文件,AOF持久化方式则会记录每一个服务器收到的写操作。在服务启动时,这些记录的操作会逐条执行从而重…

如何高效地根据 IP 获得城市?

PHP ,
答案 可以用 Redis 的有序集合(Sorted Set)实现,将 IP 保存为整形作为集合的score,再根据 score 范围查找。 /** * 时间复杂度: O(log(N)+M),N为有序集的基数,M为被结果集的基数。 */ class Ip { private $redis = null; private $key = 'ip'; public function __construct() { $t…

Redis 主从如何同步(复制)数据?

Redis
答案 无论是初次连接还是重新连接,当建立一个从服务器时,从服务器都将给主服务器发送一个 SYNC 命令。 接到 SYNC 命令的主服务器将开始执行 BGSAVE,并在保存操作执行期间,将所有新执行的命令都保存到一个缓冲区里面,当 BGSAVE 执行完毕后,主服务器将执行保存操作所得到的 .rdb 文件发送…

Redis中的有序集合是怎么实现的,数据结构是怎么样的?

Redis, 数据结构 ,
答案 Redis使用跳跃表作为有序集合键的的底层实现,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Redis就会使用跳跃表来作为有序集合键的底层实现。 Redis只在两个地方用到了跳跃表,一个是实现有序集合键,另一个是在集群节点中用作内部数据结构。…

Redis和Memcache有什么区别?

Memcache, Redis , ,
答案 共同点: 都是内存数据库。 都可以做一主多从的分布式集群。 区别: Redis支持hash、list、set、sorted set等多种数据,Memcache 仅支持字符串键值数据。 Redis 只使用单核;Memcache可使用多核多线程。所以100K以下数据Redis性能好,以上Memcache性能好。 Redis 数据可以持久化到磁盘;…