Redis学习笔记 | 青训营笔记

68 阅读2分钟

这是我参与「 第五届青训营 」伴学笔记创作活动的第 10 天

今天学习了Redis,下面是我学习的一些笔记分享。如有错误,望大家帮忙指出。

Redis是什么

Redis是一个开源的使用ANS/C语言编写、遵守BSD协议、灰持网络、可基于由存、分个式、可选持久性的键值对(Key-Value)存储数据薜,并提供多种语言的APl。

Redis通常被称为数据铉构服务器,因为值( value)可以是字符串(String)、哈布(Hash)、列表(list)、集合(sets)和有存集合(sorted sets)等类型。

Redis特点

  1. 所有操作都是原子性的,要么执行成功要么失败完全不执行。
  2. 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用,效率很高。
  3. 具有丰富的数据类型。Redis不仅支持key-value类型的数据,同时还提供了list、set、zest、hash等数据结构。
  4. 支持数据备份,master-slave模式。
  5. 读写速度快,性能极高。

Redis的使用

Redis的安装就不再赘述了,直接按照官网的安装方法就可以的。

各个数据类型应用场景

string字符串

二进制安全。

特点:可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M。

hash

键值对集合,即编程语言中的Map类型。

特性:适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值 (Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)。

场景:存储、读取、修改用户属性。

list列表

特性:增删快,提供了操作某一段元素的API。

场景

  1. 最新消息排行等功能(比如朋友圈的时间线)
  2. 消息队列

set集合

哈希表实现,元素不重复。

特性

  1. 添加、删除,查找的复杂度都是O(1)
  2. 为集合提供了求交集、并集、差集等操作

场景

  1. 共同好友
  2. 利用唯一性,统计访问网站的所有独立ip
  3. 好友推荐时,根据tag求交集,大于某个阈值就可以推荐

有序集合

将Set中的元素增加一个权重参数score,元素按score有序排列。

特性:数据插入集合时,已经进行天然排序。

场景

  1. 排行榜
  2. 带权重的消息队列

总结

今天学习了相关Redis的知识,处于刚刚入门的状态,会继续保持学习。Redis支持多个数据库,并且Redis是个非常轻量级的,一个空Redis实例占用的内存只有1M左右,所以不必要担心多个Redis占用额外的很多内存。