Redis基础学习

Redis基础学习

  • Redis简介
  • Redis数据类型

Redis简介

缓存定义: 缓存是一个高速数据交换的存储器,使用它还可以快速的访问和操作数据。

Redis is an open source (BSD licensed),in-memory data structure store,used as a database,cache ,and message broker.这是Redis官网对Redis的介绍,翻译为:Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件、

Redis官网:https://redis.io

Redis基于内存,因此具有极高的读写效率,并且支持多种数据持久化方式,使得数据能够在断电等异常下得到保护。Redis还具有强大的消息队列功能,可以广泛应用于Web应用、缓存系统、消息队列系统等场景。

Redis数据类型

Redis存储的是key-value结构的数据

  • 字符串 String
  • 哈希 hash
  • 列表 list
  • 集合 set
  • 有序集合 sorted set / zset
数据类型 说明 主要方法 使用场景
String String是Redis中最基本、最常用的数据类型,String类型是二进制安全的,一个key对应一个Value。它可以存储任何格式的数据,如:数字、字符串、图片、或者序列化的对象等 set、get、decr、incr、mget 计数器、数据缓存、session缓存
Hash Hash是一个String类型的field和Value的映射表,相比于String更节省空间,特别适用于存储对象 hset、hget、hmget 缓存用户信息
List List是简单的字符串列表,按照插入顺序排列排列,可以添加一个元素到列表头部(左边)或尾部(右边) lpush、rpush、lpop、rpop、llen、 标签、消息队列、等
Set Set是String类型的无序集合,其实也是通过哈希表实现的。集合成员是唯一的,会自动去重重复的成员 sadd、scard、sismember、zrem 共同好友等
ZSet ZSet和Set一样也是String类型元素的集合,并且不允许出现重复的成员。区别在于:ZSet的每个元素都会关联一个double类型的分数,并通过分数为集合中的成员进行排序 Zadd、zcard、zrange 排行榜、关注度等

1.字符串类型使用(String)

set [key] [value] #添加key-value字符串类型数据
get [key] #通过key查询value
strlen [key] #通过key查询value字符串的长度
set [key] [val] ex [过期时间] #通过ex可以设置过期时间

Redis基础学习_第1张图片
2.字典类型(Hash):
字典类型(Hash)有被称为散列类型或者是哈希表类型,它是将一个键值(key)和一个特殊的“哈希表”关联起来,这个“哈希表”包含两列数据:字段和值,他就相当于Java中的Map>结构。

hset [key] [field] [value] #添加数据
hget [key] [field] #获取字典中key 对应field的value

Redis基础学习_第2张图片
通常情况下地点类型会使用数组的方式存储相关的数据,但发生哈希冲突时才会使用链表的结构来存储数据。

3.列表类型(List):
列表类型(List)是一个使用链表结构存储的有序结构,它的元素插入会按照先后顺序存储到链表结构中,因此它的元素操作(插入和删除)时间复杂度为O(1),所以相对来说速度还是比较快的,但是查询时间复杂度为O(n),因此查询可能会比较慢。

lpush mylist 1 2 3 #往列表左边开始添加元素
lpop mylist # 往列表左边删除元素

Redis基础学习_第3张图片
列表的典型使用场景有以下两个:

  • 消息队列:列表类型可以使用rpush实现先进先出的功能,同时又可以使用lpop轻松弹出并删除第一个元素,所以列表类型可以用来实现消息队列;
  • 文章列表:对于博客站点来说,当用户和文章都越来越多是,为了加快程序响应速度,我们可以把用户自己的文章存入到List中,因为List是有序的结构,所以这样又可以完美实现分页功能,从而加快程序的响应速度。

4.集合类型(Set):
集合类型Set是无序并唯一的键值集合,类似于java中的Set。

sadd myset zhangsan lisi # 往Set集合中插入数据
smembers myset # 查看myset中所有数据

Redis基础学习_第4张图片

  • 微博关注我的人和我关注的人都适用集合存储,可以保证人员不会重复;
  • 中奖人信息也适用集合类型存储,这样可以保证一个人不会重复中奖。

集合类型(Set)和列表类型(List):

  • 列表类型可以存储重复元素,集合类型只能存储非重复元素;
  • 列表是按照元素的先后顺序存储元素的,而集合则是无序方式存储元素的。

有序集合类型(Sorted Set):
有序集合类型(Sorted Set)相比于集合类型多了一个排序属性score(分值),对于有序集合ZSet来说,每个存储元素相当于有两个值组成 ,一个是有序结合的元素值,一个是排序值。有序集合的存储元素值不能重复,但分值可以重复的。

zadd myZSet 10 java 9 c++ 8 golang #往有序集合插入数据并制定分值大小(分值是double类型的)
zrange myZSet 0 -1 #查询有序集合所有数据

Redis基础学习_第5张图片
有序集合经典使用场景:

  • 学生成绩排名;
  • 粉丝列表,根据关注的先后时间排序。

你可能感兴趣的:(redis,学习,数据库)