redis学习笔记
redis简介
redis(Remote dictionary server)是一个开源的基于内存的数据存储系统, 可以用于数据库缓存和消息队列等各种场景, 是目前最热门的NoSQL数据库之一。随着现代应用需要处理越来越大的访问量,传统数据库受限于磁盘I/O的速度, 其性能瓶颈越来越明显。因此基于内存的数据存储系统就应运而生了(内存的读写速度远高于磁盘)
redis支持以下五种基础数据类型:
- 字符串 String
- 列表 List
- 集合 Set
- 有序集合 SortedSet
- 哈希 Hash
除此之外redis支持以下五种高级数据类型:
- 消息队列 Stream
- 地理空间 Geospatial
- HyperLogLog
- 位图 Bitmap
- 位域 Bitfield
安装redis
在linux系统上安装redis非常简单, 我们只需要在终端输入如下指令即可安装:
1 | sudo apt install redis |
redis的基本指令
安装完成后, 我们可以通过以下命令启动redis服务
1 | redis-server |
在启动redis服务后, 我们可以使用以下命令启动一个redis客户端:
1 | redis-cli |
字符串 String
redis中的数据使用键值对存储:
1 | set name takune # 设置一个键值对, key=name value=takune |
列表 List
List用来操作一组有顺序的数据, 类似于数组, 通过这个数据结构可以实现各种队列
1 | lpush list a # 在list左边添加一个值'a' |
集合 SET
就像离散数学的集合一样, SET里的元素不能重复, 而且没有顺序
1 | sadd set redis # 在集合set中添加元素redis |
有序集合 SORTSET
相较于集合, 有序集合还会为每一个成员绑定一个数值,根据这个数值对集合元素默认进行从小到大排列:1
2
3
4zadd college 680 清华 675 北大 660 北航 670 浙大 # 创建一个有序集合college
zrange college 0 -1 whitscores # 查看有序集合的成员(添加whitscores显示分数)
zrank college 清华 # 查看某个元素的排名(默认从低到高)
zrevrank college 清华 # 查看某个元素的排名(从高到低)
哈希 hash
哈希是一个字符类型的字段和值的映射表:
1 | hset person name haruki # 向person(key)中添加name(field)对应的值(value) |
发布订阅模式
redis通过这个模式可以实现类似于视频网站的订阅功能, 制作者发布消息, 订阅该频道的人可以实时收到消息, 不过数据无法持久化, 无法记录历史信息:
1 | publish channel message # 发布message到channel |
消息队列 stream
1 | xadd |