Redis 基础

简介

Redis 是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可持久性的键值对存储数据库。

特点:

  • 基于内存运行,性能高效
  • 单进程单线程模型
  • 丰富的数据类型
  • 持久化
  • 操作具有原子性
  • 支持分布式,高并发读写
  • 支持lua脚本

 

配置

1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程

    daemonize no

2. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字

    port 6379

 3. 绑定的主机地址

    bind 127.0.0.1

4. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose

    loglevel verbose

5. 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null

    logfile stdout

 

数据类型

String

string是redis最基本的类型,string类型是二进制安全的,可以包含任何数据。比如jpg图片或者序列化的对象。一个键最大能存储512MB。

常用命令:

SET key value  //设置指定 key 的值
GET key  //获取指定 key 的值
GETRANGE key start end //返回 key 中字符串值的子字符
GETSET key value //将给定 key 的值设为 value ,并返回 key 的旧值(old value)
SETNX key value //只有在 key 不存在时设置 key 的值
STRLEN key // 返回 key 所储存的字符串值的长度
MSET key value [key value ...] // 同时设置一个或多个 key-value 对
INCR(DECR) key //将 key 中储存的数字值增(减)一
INCRBY key increment //将 key 所储存的值加上给定的增量值(increment)
INCRBYFLOAT key increment //将 key 所储存的值加上给定的浮点增量值(increment)
APPEND key value //如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾

Hash

 hash 是一个键值对集合,是一个string类型的field和value的映射表。每个 hash 可以存储 2^32 - 1 键值对。

常用命令:

HSET key field value //将哈希表 key 中的字段 field 的值设为 value
HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值 
HGET key field //获取存储在哈希表中指定字段的值
HDEL key field1 [field2] //删除一个或多个哈希表字段
HEXISTS key field //查看哈希表 key 中,指定的字段是否存在
HGETALL key //获取在哈希表中指定 key 的所有字段和值
HKEYS key //获取所有哈希表中的字段
HVALS key 获取哈希表中所有值
HLEN key //获取哈希表中字段的数量
HMGET key field1 [field2] //获取所有给定字段的值
HMSET key field1 value1 [field2 value2 ] //同时将多个 field-value (域-值)对设置到哈希表 key 中

List

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。

常用命令:

LPUSH(RPUSH) key value1 [value2..] //将一个或多个值插入到列表头部(尾部)
LPUSHX(RPUSHX) key value //将一个值插入到已存在的列表头部(尾部),列表不存在则操作无效
LSET key index value //通过索引设置列表元素的值
LINDEX key index //通过索引获取列表中的元素
LPOP key //移出并获取列表第一个元素
RPOP key //移出并获取列表最后一个元素
BLPOP key1 [key2 ] timeout //移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
BRPOP key1 [key2 ] timeout //移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
LRANGE key start stop //获取列表指定范围内的元素
LREM key count value //移除列表元素, 
LLEN key //获取列表长度, count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。count = 0 : 移除表中所有与 VALUE 相等的值。
LTRIM key start stop //对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

Set

Redis的Set是string类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

常用命令:

SADD key member1 [member2] //向集合添加一个或多个成员
SREM key member1 [member2] //移除集合中一个或多个成员
SUNION key1 [key2] //返回所有给定集合的并集
SINTER key1 [key2] //返回给定所有集合的交集
SDIFF key1 [key2] //返回给定所有集合的差集
SUNIONSTORE destination key1 [key2] //返回给定所有集合的并集并存储在 destination 中
SINTERSTORE destination key1 [key2] //返回给定所有集合的交集并存储在 destination 中
SDIFFSTORE destination key1 [key2] //返回给定所有集合的差集并存储在 destination 中
SCARD key //获取集合的成员数
SMEMBERS key //返回集合中的所有成员
SISMEMBER key member //判断 member 元素是否是集合 key 的成员

zset

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

常用命令:

ZADD key score1 member1 [score2 member2] //向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZSCORE key member //返回有序集中,成员的分数值
ZCARD key //获取有序集合的成员数
ZCOUNT key min max //计算在有序集合中指定区间分数的成员数
ZRANGE key start stop [WITHSCORES] //通过索引区间返回有序集合指定区间内的成员

HyperLogLog

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

常用命令:

PFADD key element [element ...] //添加指定元素到 HyperLogLog 中。
PFCOUNT key [key ...] //返回给定 HyperLogLog 的基数估算值。
PFMERGE destkey sourcekey [sourcekey ...] //将多个 HyperLogLog 合并为一个 HyperLogLog

Redis 发布订阅

Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。

常用命令:

SUBSCRIBE channel [channel ...] //订阅给定的一个或多个频道的信息
UNSUBSCRIBE [channel [channel ...]] //指退订给定的频道
PUBLISH channel message //将信息发送到指定的频道

Redis 事务

Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

  • 批量操作在发送 EXEC 命令前被放入队列缓存。
  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的,可以理解为一个打包的批量执行脚本。中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

对于学习Redis基础知识,可以按照以下思路进行学习: 1. 了解Redis的概念和特点:首先需要了解Redis是什么,它的主要特点是什么,它为什么被广泛应用于缓存、消息队列、会话管理等场景。 2. 安装和配置Redis:根据你的操作系统,安装Redis并进行相关配置。可以参考Redis官方文档或其他教程来完成这一步。 3. 学习Redis的数据结构:Redis支持多种数据结构,如字符串、哈希、列表、集合和有序集合等。了解每种数据结构的特点、用途和操作命令,并通过实际操作来加深理解。 4. 掌握Redis的常用命令:学习Redis的常用命令,如get、set、hget、hset、lpush、lrange、sadd、smembers等,了解每个命令的具体用法和参数含义。 5. 理解Redis的持久化机制:了解Redis的RDB和AOF两种持久化方式,以及它们的优缺点。学习如何进行备份和恢复数据。 6. 学习Redis的事务和Lua脚本:了解Redis事务的基本概念和使用方法,以及如何使用Lua脚本来进行复杂的操作。 7. 深入了解Redis的性能优化和高可用方案:学习如何优化Redis的性能,包括配置调优、使用合适的数据结构、合理地使用缓存等。同时了解Redis的高可用方案,如主从复制、哨兵模式和集群模式。 8. 学习Redis与其他技术的结合:了解Redis如何与其他技术进行结合,如与Python、Java等编程语言的配合使用,以及与Spring、Django等框架的整合。 以上是学习Redis基础知识的一个思路,你可以根据自己的实际情况和需求进行学习和拓展。推荐参考一些经典的Redis教程和实战案例,通过实际操作和项目实践来提升自己的技能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值