Redis 简介

什么是Redis?

是一个Key-Value数据库。是一个开源、ASNI C语言编写、支持网络、可基于内存亦可持久化的日志型的数据库,并提供多种语言的API。

为什么选择Redis?

Redis 特点:

  • Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。(除string外还有其他丰富的数据模型)
  • Redis 支持数据的备份,即 master-slave 模式的数据备份。

Redis 优势:

  • 高性能:Redis 读写性能突出,官网测试的读写速度能达到每秒10万次左右。
  • 丰富的数据类型:Redis 支持 string, list, hashe, set 及 ordered set 数据类型。
  • 原子性: Redis的所有操作都是原子性的,就是要么成功执行,要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过 MULTI 和 EXEC 指令包起来。
  • 丰富的特性:Redis还支持 publish/subscribe, 通知, key 过期等特性。

Redis 与其它 key-value 存储系统对比:
数据模型丰富、操作原子性、数据结构透明且无需抽象、可持久化、磁盘存储格式紧凑。

  • Redis 有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
  • Redis 运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

Redis 的安装

Windows Redis下载地址:https://github.com/tporadowski/redis/releases

下载 Redis-x64-xxx.zip 压缩包,并解压到 C:\redis下

打开一个 cmd 窗口 使用 cd 命令切换目录到 C:\redis 运行:

plain 复制代码
redis-server.exe redis.windows.conf

另启一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。切换到 redis 目录下运行:

plain 复制代码
redis-cli.exe -h 127.0.0.1 -p 6379

即可开始 Redis 的简单使用了。

Redis 有哪些数据类型?

Redis支持五种数据类型:

string(字符串),hash(哈希),list(列表),set(集合)及 zset(有序集合)。

速记小技巧: 士奇 有趣

哈-hash;拉-list;屎-set;有趣-zset;

string

string 是 redis 最基本的类型,它的存取方式就是 key-value ,一个 key 对应一个 value。

string 类型是二进制安全的,也就是 redis 的 string 可以包含任何数据。比如 jpg 图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

plain 复制代码
//设置 key 和 value
SET key value
//批量设置 key 和 value
MSET key vlaue [key value ...]
//获取指定可以的 value
GET key

hash(哈希)

Redis hash 是一个键值对(key-value)集合

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

每个 hash 可以存储 2^{32} -1 键值对(40多亿)

plain 复制代码
//将哈希表 key 中的字段 field 的值设为 value 。
HSET key field value
//批量设置
HMSET key field value [field value ...]
//获取存储在哈希表中指定字段的值。
HGET key field

list(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。列表可以当做先进先出(LILO)的队列使用 ,又可以当做先进后出(FILO)的栈使用

列表最多可存储2^{32} - 1 元素 (4294967295, 每个列表可存储40多亿)。

plain 复制代码
//将一个或多个值插入到列表头部
LPUSH key value [value ...]
//获取列表指定范围内的元素
LRANGE key start stop

set(集合)

Redis 的 Set 是 string 类型的无序集合。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)

添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0。

集合中最大的成员数为 2^{32} - 1(4294967295, 每个集合可存储40多亿个成员)。

plain 复制代码
//向集合添加一个或多个成员
SADD key member [member ...]
//返回集合中的所有成员
SMEMBERS key

zset(有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

添加元素到集合,元素在集合中存在则更新对应score。

plain 复制代码
//向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZADD key score member [score member ...]
//通过索引区间返回有序集合指定区间内的成员
ZRANGE key start stop [WITHSCORES]

Redis 相关链接分享

Redis 官网:https://redis.io/

Redis 源码地址:https://github.com/redis/redis

Redis 在线测试:http://try.redis.io/

Redis 命令参考:http://doc.redisfans.com/

相关推荐
颜颜yan_6 小时前
时序数据库性能较量:金仓数据库如何在高负载场景中领跑InfluxDB
数据库·时序数据库
yfs10246 小时前
PostgreSQL 16 + pgvector 完整安装和内网访问指南(Ubuntu 20.04)
数据库·ubuntu·postgresql
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ6 小时前
查询MySQL数据库表的结构和数据
数据库·mysql·oracle
脸大是真的好~6 小时前
MYSQL与B+树与索引相关面试题
数据库·b树·mysql
云和数据.ChenGuang6 小时前
ELK 是一套**开源的日志收集、存储、分析与可视化的技术栈
服务器·数据库·elk·开源·运维技术·数据库运维工程师
MoonBit月兔6 小时前
海外开发者实践分享:用 MoonBit 开发 SQLC 插件(其一)
数据库·缓存·wasm·moonbit
小高求学之路6 小时前
eo4j 图数据库备忘单
数据库·neo4j
2301_796512526 小时前
React Native鸿蒙跨平台开发如何使用MongoDB或Firebase作为后端数据库来存储车辆信息、保养记录和预约信息
数据库·mongodb·react native
电商API_180079052477 小时前
主流电商平台 API 横向测评:淘宝、京东、拼多多接口能力与对接成本分析
大数据·开发语言·网络·数据库·人工智能
Chasing__Dreams9 小时前
kafka--基础知识点--6.4--LSO
数据库·分布式·kafka