Redis

mac2025-12-03  8

文章目录

1. NoSQL 简介1.1 NoSQL 的概念1.2 NoSQL 的作用1.3 关系型和非关系型数据库比较1.4 主流的 NoSQL 产品 2. Redis 的概念3. Redis 的安装4. Redis 的命令4.1 Redis 的数据结构4.2 字符串类型 String4.3 哈希类型 Hash4.4 列表类型 List4.5 集合类型 Set4.6 有序集合类型 SortedSet4.7 通用命令 5. Redis 的持久化5.1 持久化的作用5.2 Redis 持久化机制5.3 RDB 的使用5.4 AOF 的使用

1. NoSQL 简介

1.1 NoSQL 的概念

NoSQL(Not Only SQL),意即"不仅仅是 SQL",是一项全新的数据库理念,泛指非关系型的数据库。

1.2 NoSQL 的作用

NoSQL 用于超大规模数据的存储。

1.3 关系型和非关系型数据库比较

关系型数据库的数据之间有关联关系,非关系型数据库的数据之间没有关联关系关系型数据库的数据存储在硬盘的文件上,非关系型数据库的数据存储在内存中(所以非关系型数据库的查询速度更快)关系型数据库存储的数据格式只支持基本数据类型,非关系型数据库的存储的数据格式可以是 key-value 形式、文档形式、图片形式等等

1.4 主流的 NoSQL 产品

键值(Key-Value)存储数据库 相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB 典型应用: 内容缓存,主要用于处理大量数据的高访问负载。 数据模型: 一系列键值对 优势: 快速查询 劣势: 存储的数据缺少结构化列存储数据库 相关产品:Cassandra, HBase, Riak 典型应用:分布式的文件系统 数据模型:以列簇式存储,将同一列数据存在一起 优势:查找速度快,可扩展性强,更容易进行分布式扩展 劣势:功能相对局限文档型数据库 相关产品:CouchDB、MongoDB 典型应用:Web应用(与Key-Value类似,Value是结构化的) 数据模型: 一系列键值对 优势:数据结构要求不严格 劣势: 查询性能不高,而且缺乏统一的查询语法图形(Graph)数据库 相关数据库:Neo4J、InfoGrid、Infinite Graph 典型应用:社交网络 数据模型:图结构 优势:利用图结构相关算法。 劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

2. Redis 的概念

Redis 是一款高性能的键值(Key-Value)存储的非关系型数据库。

3. Redis 的安装

进入网站

https://github.com/MSOpenTech/redis/releases

下载文件

Redis-x64-xxx.zip

直接解压到电脑就可以使用

目录结构

redis.windows.conf:配置文件redis-cli.exe:redis 的客户端redis-server.exe:redis 服务器端

简单使用

打开 redis 服务器端,不要关闭

打开 redis 的客户端,输入

127.0.0.1:6379> set username zhangsan OK 127.0.0.1:6379> get username "zhangsan"

4. Redis 的命令

4.1 Redis 的数据结构

redis 存储的是 key-value 格式的数据,其中 key 都是字符串类型,value 有 5 种不同的数据结构:

字符串类型 String哈希类型 Hash:key-value 的集合列表类型 List:支持重复元素集合类型 Set :不允许重复元素有序集合类型 SortedSet:不允许重复元素,且元素有顺序排序

4.2 字符串类型 String

存储一个元素

语法:

set key value

实例:

127.0.0.1:6379> set username zhangsan OK

获取一个元素

语法:

get key

实例:

127.0.0.1:6379> get username "zhangsan"

删除一个元素

语法:

del key

实例:

127.0.0.1:6379> del username (integer) 1

4.3 哈希类型 Hash

存储一个元素

语法:

hset key field value

实例:

127.0.0.1:6379> hset myhash username zhangsan (integer) 1

获取一个元素

语法:

hget key field

实例:

127.0.0.1:6379> hget myhash username "zhangsan"

获取所有元素

语法:

hgetall key

实例:

127.0.0.1:6379> hgetall myhash 1) "age" 2) "18"

删除一个元素

语法:

hdel key field

实例:

127.0.0.1:6379> hdel myhash username (integer) 1

4.4 列表类型 List

将元素添加列表左边

语法:

lpush key value

实例:

127.0.0.1:6379> lpush mylist a (integer) 1 127.0.0.1:6379> lpush mylist b (integer) 2

将元素添加列表右边

语法:

rpush key value

实例:

127.0.0.1:6379> rpush mylist c (integer) 1

获取指定区间元素

说明:

lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

语法:

lrange key start end

实例:

127.0.0.1:6379> lrange mylist 0 -1 1) "b" 2) "a" 3) "c"

删除列表最左边的元素,并将元素返回

语法:

lpop key

实例:

127.0.0.1:6379> lpop mylist "b"

删除列表最右边的元素,并将元素返回

语法:

rpop key

实例:

127.0.0.1:6379> rpop mylist "c"

4.5 集合类型 Set

存储一个元素

语法:

sadd key value

实例:

127.0.0.1:6379> sadd myset a (integer) 1 127.0.0.1:6379> sadd myset a (integer) 0

注意:Set 不能添加重复元素

获取全部元素

语法:

smembers key

实例:

127.0.0.1:6379> smembers myset 1) "b" 2) "a"

删除某个元素

语法:

srem key value

实例:

127.0.0.1:6379> srem myset c (integer) 1

4.6 有序集合类型 SortedSet

存储一个元素

语法:

zadd key score value

实例:

127.0.0.1:6379> zadd mysortedset 60 a (integer) 1 127.0.0.1:6379> zadd mysortedset 50 b (integer) 1 127.0.0.1:6379> zadd mysortedset 80 c (integer) 1

获取指定区间元素

语法:

zrange key start end [withscores]

实例:

127.0.0.1:6379> zrange mysortedset 0 -1 1) "b" 2) "a" 3) "c" 127.0.0.1:6379> zrange mysortedset 0 -1 withscores 1) "b" 2) "50" 3) "a" 4) "60" 5) "c" 6) "80"

删除一个元素

语法:

zrem key value

实例:

127.0.0.1:6379> zrem mysortedset a (integer) 1

4.7 通用命令

查询所有的键

keys *

获取键对应的value的类型

type key

删除指定的 key-value

del key

5. Redis 的持久化

5.1 持久化的作用

Redis 是一个内存数据库,当 Redis 服务器重启后,数据会丢失。如果需要这些数据,可以将 Redis 内存中的数据持久化保存到硬盘的文件中。

5.2 Redis 持久化机制

RDB:默认方式,不需要进行配置,默认就使用这种机制。AOF:日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据。

5.3 RDB 的使用

打开 redis.windwos.conf 文件,找到以下内容

save 900 1 save 300 10 save 60 10000

将其修改为以下内容

save 900 1 save 300 10 # 如果 10 秒内至少有 5 个键被改变,就持久化 save 10 5

打开命令提示符,启动 Redis 服务器,并指定配置文件名称

D:\Redis>redis-server.exe redis.windows.conf

启动 Redis 客户端,十秒内改变五个键

127.0.0.1:6379> set name a OK 127.0.0.1:6379> set name b OK 127.0.0.1:6379> set name c OK 127.0.0.1:6379> set name d OK 127.0.0.1:6379> set name e OK

redis 文件夹中多了一个 dump.rdb 文件

关闭 Redis 的客户端,服务端

重新开启 Redis 的客户端,服务端,获取数据成功

127.0.0.1:6379> get name "e"

5.4 AOF 的使用

打开 redis.windwos.conf 文件,找到以下内容

appendonly no

将其修改为以下内容(开启 AOF)

appendonly yes

redis.windwos.conf 文件还有关于 AOF 持久化的方式的配置

# appendfsync always : 每一次操作都进行持久化 appendfsync everysec : 每隔一秒进行一次持久化 # appendfsync no : 不进行持久化

打开命令提示符,启动 Redis 服务端,并指定配置文件名称

D:\Redis>redis-server.exe redis.windows.conf

启动 Redis 客户端,存储一个数据

127.0.0.1:6379> set name a OK

redis 文件夹中多了一 appendonly.aof 文件

关闭 Redis 的客户端,服务端

打开命令提示符,启动 Redis 服务端,并指定配置文件名称

D:\Redis>redis-server.exe redis.windows.conf

启动 Redis 客户端,获取数据成功

127.0.0.1:6379> get name "a"
最新回复(0)