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/

相关推荐
Mr数据杨9 分钟前
练习题 - Django 4.x Overviewses 框架概述
数据库·sqlite
就这个java爽!20 分钟前
超详细的XML介绍【附带dom4j操作XML】
xml·java·开发语言·数据库·青少年编程·eclipse
_.Switch25 分钟前
Python Web 架构设计与性能优化
开发语言·前端·数据库·后端·python·架构·log4j
Shall#30 分钟前
Innodb存储架构
数据库·mysql·架构
SelectDB技术团队1 小时前
Apache Doris 2.1.6 版本正式发布
大数据·数据库·数据仓库·开源·doris
不会八股文1 小时前
达梦数据库导入xml迁移到达梦数据库大文件导致中断问题解决方案记录?
xml·数据库
拜见老天師1 小时前
SpringBoot中对数据库连接配置信息进行加密处理
数据库·spring boot·后端
萌新小码农‍1 小时前
汽车美容服务管理系统的数据库设计与数据操作
数据库·汽车
x66ccff1 小时前
【linux】快速列出 systemctl 特定名的服务
linux·服务器·数据库
Jiangw5572 小时前
【实战篇】MySQL是怎么保证主备一致的?
数据库·sql·mysql