【学习笔记】Redis学习笔记
Redis简介
什么是Redis?
redis是一个开源的基于内存的数据存储系统
使用场景
作为数据库、缓存和消息中间件
数据类型
| 五种基本数据类型 | |||
|---|---|---|---|
| 简介 | 类型 | 特性 | 场景 |
字符串 String | 二进制安全 | 可以包含任何数据,比如 JPG 图片或者序列化的对象,一个键最大能存储 512M | 简短的字符场景 |
哈希 Hash | 键值对集合,即编程语言中的 Map 类型 | 适合存储对象,并且可以像数据库中 update 一个属性一样只修改某一项属性值 | 存储、读取、修改用户属性 |
| 列表 List | 链表(双向链表) | 增删快,提供了操作某一段元素的 API | ①最新消息排行等功能(比如朋友圈的时间线); ②消息队列 |
| 集合Set | 哈希表实现,元素不重复 | ①添加、删除,查找的复杂度都是 O(1) ②为集合提供了求交集、并集、差集等操作 | ①共同好友; ②利用唯一性,统计访问网站的所有独立 IP; ③好友推荐时,根据 tag 求交集,大于某个阈值就可以推荐 |
| 有序集合 Sorted Set | 将 Set 中的元素增加一个权重参数 score,元素按 score 有序排列 | 数据插入集合时,已经进行天然排序 | ①排行榜; ②带权重的消息队列 |
| 五种高级数据类型 | |
|---|---|
| HyperLogLog | 海量数据基数统计的场景,比如百万级网页 UV 计数等 |
| 消息队列 Stream | 相比于基于 List 类型实现的消息队列,有这两个特有的特性:自动生成全局唯一消息ID,支持以消费组形式消费数据 |
| 地理空间 Geospatial | 存储地理位置信息的场景,比如滴滴叫车 |
| 位图 Bitmap | 二值状态统计的场景,比如签到、判断用户登陆状态、连续签到用户总数等 |
| 位域 Bitfield | 将一个 Redis 字符串看作是一个由二进制位组成的数组, 并对这个数组中任意偏移进行访问 |
操作方式
- CLI (Command Line Interface) 通过Redis-CLI命令行工具来使用Redis
- API (Application Programming g Interface) 通过编写代码调用api来使用Redis
- GUI((Graphical User Interface) 使用图形化工具来使用Redis
Redis的优势
- 性能非常高,因为数据存在内存中,所以数据获取快;
- 支持多种数据结构,包括字符串、列表、集合、有序集合、哈希等;
- 支持事务,且操作遵守原子性,即对数据的操作要么都执行,要么都不支持;
- 还拥有其他丰富的功能,队列、主从复制、集群、数据持久化等功能。
如何安装Redis
linux
- 安装Redis: 对于大多数Linux发行版,可以使用包管理器安装Redis。以下以Ubuntu为例:
▼text复制代码
sudo apt update sudo apt install redis-server - 启动Redis服务:
▼text复制代码
sudo service redis-server start - 使用Redis客户端: 打开终端,直接运行以下命令连接到Redis服务:
▼text复制代码
redis-cli
MacOS
-
安装Redis: 可以使用Homebrew来安装Redis:
▼text复制代码brew install redis -
启动Redis服务:
▼text复制代码brew services start redis -
使用Redis客户端: 打开终端,直接运行以下命令连接到Redis服务:
▼text复制代码redis-cli
Windows
三种方式:
- WSL安装linux,在linux里安装Redis
- 安装Docker,通过Docker运行Redis镜像
主要写通过安装文件来操作
- 通过安装文件安装
- 下载Redis: 访问Redis官网 redis.io/download,下载Windows版本的Redis,github地址Releases · tporadowski/redis (github.com)
- 安装Redis: 解压下载的压缩包到指定的目录。
- 启动Redis: 打开命令提示符(cmd),切换到Redis解压目录,运行以下命令启动Redis服务:
▼text复制代码
redis-server.exe redis.windows.conf - 使用Redis客户端: 在另一个命令提示符窗口中,切换到Redis解压目录,运行以下命令连接到Redis服务:
▼text复制代码
redis-cli.exe
▼text复制代码用set和get操作redis
RedisInsight
下载路径:RedisInsight - The Best Redis GUI
随便输入邮箱和信息来下载
快捷管理
刚创建的key可以看到了
下方可以快捷打开命令行,无需在cmd里操作
开始使用Redis
Redis命令
- 设置数据 key——value Redis中的数据是由键值对存取的,所以需要指定一个键和一个值,键和值之间使用空格来分隔,使用SET命令
▼text复制代码SET name TingFeng
- 获取数据
使用GET命令
```
GET name
```
tip:Redis的键是区分大小写的 TingFeng ≠tingfeng
- 删除值 使用DEL命令,删除之后再获取就提示(nil)
▼text复制代码DEL name
- 判断键是否存在 使用EXISTS命令
▼text复制代码EXISTS name
name被删了所以不存在(0),k2之前被创建过,所以存在(1)
- 查看数据库中都有哪些键 使用KEYS命令,比如KEYS * 查找所有的键
▼text复制代码KEYS *
- 删除所有键(慎用) FLUSHALL
- 中文显示
redis默认显示二进制,所以无法正常展示中文,需要退出重新进入redis,在登录的时候加上 --raw表示以原始形式显示内容
```
redis-cli --raw
```
- 清屏 和linux一样,使用clear清屏
- 设置带有过期时间的键值对 用TTL(time to live)命令来查看键值对的过期时间,显示-1就是没有过期时间,显示-2就是过期了,这个键就查不到了
▼text复制代码TTL name
使用EXPIRE来设置过期时间 20表示20秒
▼text复制代码EXPIRE name 20
LIST
也叫列表,用来存储和操作一组有顺序的数据
PUSH(添加元素)
用LPUSH或RPUSH来将元素添加到列表的头部或尾部 添加字母(letter)列表,值为a,也可以添加多个元素,比如LPUSH c d e空格隔开,由于LPUSH是从头部添加,所以顺序是跟栈一样后进的在前 e d c,RPUSH 是在尾部添加,所以是按顺序的
▼text复制代码LPUSH letter a LPUSH letter b LPUSH letter c d e RPUSH letter f g h
获取列表内容使用LRANGE命令 格式参考,key 起始位置和结束位置 起始0表示第一个元素 -1表示最后一个元素
▼text复制代码LRANGE letter 0 -1
##### POP(删除元素)
用LPOP和RPOP分别从头部和尾部删除元素
pop命令不需要指定,会返回被删除的元素,后面加数字表示删除多个(redis5.0不支持删除多个元素)
▼text复制代码LPOP letter RPOP letter
LLEN(查看列表长度)
LTRIM(删除设置的值范围以外的元素) 删除了2-3范围以外的元素,也就是只保留2和3两个元素(d是第0个)
▼text复制代码LLEN letter LTRIM letter 2 3

相关专栏
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论

