Redis 学习笔记

一、Redis 简介

Redis(Remote Dictionary Server)是一个开源的高性能键值对存储数据库,由 Salvatore Sanfilippo 编写,使用 C 语言开发。它支持多种数据类型,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)、范围(ranges)、位图(bitmaps)、超日志(hyperloglogs)和地理空间索引(geospatial indexes)等。Redis 具有高速读写能力,常被用于缓存、消息队列、排行榜等场景。

二、NoSQL 数据库概述

NoSQL(Not Only SQL)数据库是一种非关系型数据库,与传统的关系型数据库(如 MySQL、Oracle、SQL Server 等)相比,NoSQL 数据库具有更高的灵活性和扩展性。NoSQL 数据库主要分为以下四大类:

  1. 键值对(Key-Value)数据库:使用哈希表存储数据,键唯一,值可以是任意类型。例如 Redis、SSDB、Oracle BDB 等。
  2. 列存储(Columnar Storage)数据库:数据按列存储,适合大数据量的读写操作。例如 HBase。
  3. 文档型数据库:以 JSON 或 BSON 格式存储文档数据,适合存储结构化或半结构化数据。例如 MongoDB、SQLite。
  4. 图形数据库:用于存储和查询复杂的图形数据结构。例如 InfoGrid。

NoSQL 数据库适用于数据模型简单、灵活性强、对性能要求高且不需要高度数据一致性的场景。在实际应用中,NoSQL 数据库通常与关系型数据库配合使用,作为中间件或缓存层。

三、Redis 的安装与配置

1. 安装 Redis

Redis 是用 C 语言编写的,因此在安装之前需要确保系统已安装 GCC 编译器。

yum install -y gcc

进入 Redis 解压目录,执行以下命令进行编译和安装:

make MALLOC=libc
make install PREFIX=/usr/redis

如果系统中没有 make 命令,可以先安装 make 工具:

yum install -y make

安装完成后,Redis 的可执行命令会位于 /usr/redis/bin 目录下。

2. 启动 Redis

进入 Redis 的 bin 目录,启动 Redis 服务:

./redis-server

默认情况下,Redis 使用 redis.conf 配置文件中的设置启动。如果需要指定配置文件,可以将 redis.conf 复制到安装目录,并修改相关配置项(如端口号等)。然后使用以下命令启动 Redis:

./redis-server ../redis.conf

3. 停止 Redis

Redis 提供了 redis-cli 工具用于与 Redis 服务交互。停止 Redis 服务可以使用以下命令:

./redis-cli shutdown

四、Redis 的基本操作

1. 数据库管理

Redis 内置了 16 个数据库(索引 0-15),可以通过 SELECT 命令切换数据库。例如:

SELECT 1

切换到数据库 1。

常用数据库管理命令:

  • FLUSHDB:清空当前数据库。
  • FLUSHALL:清空所有数据库。
  • EXIT:退出 Redis 客户端。

2. 键操作

Redis 中的键是唯一的,可以使用以下命令对键进行操作:

  • DEL key [key...]:删除一个或多个键。
  • EXISTS key:检查键是否存在,返回 1 表示存在,0 表示不存在。
  • EXPIRE key seconds:为键设置过期时间(秒)。
  • KEYS pattern:查找符合指定模式的键。
  • MOVE key db:将键从当前数据库移动到指定数据库。
  • RENAME key newkey:重命名键。
  • TYPE key:查看键的数据类型。

3. 数据类型及操作

(1)String 类型

String 是 Redis 最基本的数据类型,用于存储字符串、数字等数据。常用命令:

  • SET key value:设置键值对。
  • GET key:获取键的值。
  • MSET key1 value1 [key2 value2 ...]:同时设置多个键值对。
  • MGET key1 [key2 ...]:同时获取多个键的值。
  • GETSET key value:获取键的原始值,并设置新的值。
  • STRLEN key:获取键存储的数据长度。
  • APPEND key value:为键追加内容。
  • GETRANGE key start end:截取键的值,startend 为索引。
  • SETEX key seconds value:设置键的存活有效期(秒)。
  • PSETEX key milliseconds value:设置键的存活有效期(毫秒)。
  • SETNX key value:如果键不存在,则设置键值对。
  • MSETNX key1 value1 [key2 value2 ...]:同时设置多个键值对,原子操作。
  • DECR key:对键的值进行 -1 操作。
  • DECRBY key decrement:对键的值进行 -n 操作。
  • INCR key:对键的值进行 +1 操作。
  • INCRBY key increment:对键的值进行 +n 操作。
  • INCRBYFLOAT key increment:对键的值进行浮点数加法操作。
(2)List 类型

List 是一个有序的字符串列表,可以使用 LPUSHRPUSH 命令在列表的头部或尾部添加元素。常用命令:

  • LPUSH key value1 [value2 ...]:在列表头部添加一个或多个元素。
  • RPUSH key value1 [value2 ...]:在列表尾部添加一个或多个元素。
  • LPOP key:移除并返回列表头部的元素。
  • RPOP key:移除并返回列表尾部的元素。
  • LPUSHX key value:在列表头部添加元素,仅当键存在时有效。
  • RPUSHX key value:在列表尾部添加元素,仅当键存在时有效。
  • LINDEX key index:获取列表中指定索引的元素。
  • LSET key index value:设置列表中指定索引的元素值。
  • LREM key count value:移除列表中与指定值匹配的元素。
  • LTRIM key start stop:保留列表中指定索引范围内的元素。
  • LLEN key:获取列表的长度。
  • LINSERT key BEFORE|AFTER pivot value:在列表中指定元素前或后插入新元素。
(3)Set 类型

Set 是一个无序的字符串集合,元素唯一。常用命令:

  • SADD key member1 [member2 ...]:向集合中添加一个或多个元素。
  • SREM key member1 [member2 ...]:从集合中移除一个或多个元素。
  • SPOP key:移除并返回集合中的一个随机元素。
  • SMOVE source destination member:将元素从一个集合移动到另一个集合。
  • SCARD key:获取集合的元素个数。
  • SISMEMBER key member:检查元素是否存在于集合中。
  • SRANDMEMBER key [count]:随机返回集合中的元素。
  • SINTER key1 [key2 ...]:返回多个集合的交集。
  • SUNION key1 [key2 ...]:返回多个集合的并集。
  • SDIFF key1 [key2 ...]:返回多个集合的差集。
(4)Hash 类型

Hash 类型是一个键值对集合,键为字符串,值可以是字符串、数字等。常用命令:

  • HSET key field value:设置哈希表中指定字段的值。
  • HGET key field:获取哈希表中指定字段的值。
  • HDEL key field1 [field2 ...]:删除哈希表中一个或多个字段。
  • HEXISTS key field:检查哈希表中指定字段是否存在。
  • HGETALL key:获取哈希表中所有字段和值。
  • HINCRBY key field increment:对哈希表中指定字段的值进行 +n 操作。
  • HINCRBYFLOAT key field increment:对哈希表中指定字段的值进行浮点数加法操作。
  • HKEYS key:获取哈希表中所有字段。
  • HVALS key:获取哈希表中所有值。
  • HLEN key:获取哈希表中字段的数量。
(5)Zset 类型

Zset(Sorted Set)是一个有序集合,元素带有分数,按分数排序。常用命令:

  • ZADD key score1 member1 [score2 member2 ...]:向有序集合中添加元素。
  • ZREM key member1 [member2 ...]:从有序集合中移除元素。
  • ZINCRBY key increment member:对有序集合中指定元素的分数进行 +n 操作。
  • ZSCORE key member:获取有序集合中指定元素的分数。
  • ZRANK key member:获取有序集合中指定元素的排名(按升序)。
  • ZREVRANK key member:获取有序集合中指定元素的排名(按降序)。
  • ZRANGE key start stop [WITHSCORES]:获取有序集合中指定索引范围内的元素。
  • ZREVRANGE key start stop [WITHSCORES]:获取有序集合中指定索引范围内的元素(按降序)。
  • ZCARD key:获取有序集合中元素的数量。
  • ZCOUNT key min max:获取有序集合中分数在指定范围内的元素数量。
  • ZREMRANGEBYRANK key start stop:移除有序集合中指定排名范围内的元素。
  • ZREMRANGEBYSCORE key min max:移除有序集合中分数在指定范围内的元素。

五、总结

Redis 是一个功能强大的 NoSQL 数据库,具有高性能、高灵活性和丰富的数据类型。通过学习 Redis 的基本概念、安装配置和常用命令,可以更好地理解其在实际应用中的作用。Redis 适用于缓存、消息队列、排行榜等多种场景,是现代互联网架构中不可或缺的一部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值