Redis初步介绍

1. NoSQL 介绍

NoSQL(Not Only SQL) 是一类新兴的数据库,与传统的关系型数据库(RDBMS)相比,具有以下几个显著特点:

  • 不支持SQL语法:NoSQL数据库不使用SQL作为查询语言。
  • 存储结构不同:NoSQL存储的数据以键值对(KV)形式为主,而非传统的关系表结构。
  • API和语法多样:每种NoSQL数据库都有自己的API和语法,适用于不同的业务场景。
  • 产品种类丰富:包括MongoDB(文档型)、Redis(数据结构服务器)、HBase(分布式)、Cassandra(分布式)等。

与SQL数据库的比较

  • 结构定义:SQL数据库的数据结构需事先定义,而NoSQL数据库支持动态无结构的数据。
  • 扩展方式:SQL数据库主要通过增加硬件配置进行垂直扩展,而NoSQL数据库可通过增加服务器数量进行水平扩展。
2. Redis 简介

Redis 是一个开源的、使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。Redis的特点包括:

  • 数据持久化:支持将数据从内存保存到磁盘,重启时可重新加载。
  • 多种数据结构:不仅支持简单的key-value类型,还提供list、set、zset、hash等多种数据结构。
  • 数据备份:支持master-slave模式的数据备份。

Redis的优点

  • 性能高:读写速度极快,分别达到110000次/s和81000次/s。
  • 数据类型丰富:支持Strings、Lists、Hashes、Sets及Ordered Sets等多种数据类型。
  • 原子性:所有操作都是原子性的,支持多个操作的原子性执行。
  • 特性丰富:支持发布/订阅、通知、key过期等特性。

Redis的运用场景

  • 缓存:由于所有数据都放在内存中,Redis非常适合作为缓存系统。
  • 替代传统数据库:在特定场景下,如社交类应用,Redis可以替代MySQL等传统数据库。
  • 大型系统存储:如存储session信息、购物车订单等。
3. Redis 环境搭建

方式一:使用包管理器安装

sudo apt-get install redis-server

方式二:手动编译安装

  1. 下载Redis源码包
sudo wget http://download.redis.io/releases/redis-6.2.4.tar.gz
  1. 解压并移动到指定目录
tar -zxvf redis-7.2.5.tar.gz  
sudo mv redis-7.2.5 /usr/local/redis
  1. 编译安装
cd /usr/local/redis  
sudo make  
sudo apt-get update  
sudo apt-get install make  
sudo make install
  1. 安装TCL并检测Redis依赖
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz  
cd /usr/local/tcl8.6.1/unix/  
sudo ./configure  
sudo make  
sudo make install  
sudo make test
  1. 将Redis命令安装到/usr/local/bin/
sudo make install

配置文件

  • 配置文件位于/usr/local/redis/redis.conf,建议移动到/etc/redis/目录下。
  • 核心配置选项包括绑定IP、端口、是否以守护进程运行、数据文件路径、日志文件路径等。

服务端操作

  • 启动Redis服务:sudo service redis start
  • 停止Redis服务:sudo service redis stop
  • 重启Redis服务:sudo service redis restart

客户端操作

  • 使用redis-cli命令连接Redis服务器,可以指定端口和密码。
  • 运行测试命令如ping,检查Redis服务是否正常运行。
4. Redis 数据结构

Redis的数据结构是key-value形式,其中value支持五种数据类型:

  • 字符串(Strings)
  • 散列(Hashes)
  • 列表(Lists)
  • 集合(Sets)
  • 有序集合(Sorted Sets)

每种数据类型都有其特定的应用场景和优势,如字符串适用于简单的键值存储,列表适用于存储有序的数据序列等。

03-08
### 关于Redis介绍 Redis是一种非关系型,键值对存储的内存级数据库[^4]。它采用C语言编写而成,在数据结构方面提供了丰富的支持,不仅限于字符串类型的value,还包括列表、集合、有序集以及哈希表等多种复杂的数据类型。 由于其完全基于内存的操作特性,使得读写速度极快;同时为了防止意外断电等情况造成的数据丢失问题,还具备持久化机制能够定期将内存中的数据保存至磁盘文件里。另外,Redis也拥有良好的扩展性和高可用方案,比如主从复制模式可以实现读写的分离分担压力,哨兵系统则用于监控集群状态并自动完成故障转移等重要功能。 ### Spring Boot集成Redis的方法概述 对于希望在Java项目中利用Spring Boot框架快速搭建起与Redis交互环境的情况而言,通常会创建如下几个核心组件: #### 1. `RedisUtils.java` 作为主要负责执行各种基本CRUD(Create, Read, Update and Delete)指令以及其他高级特性的工具类。这里包含了诸如设置单个或批量对象、获取指定范围内的成员项、删除特定条件下的条目等功能接口定义及其具体实现逻辑[^1]。 ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @Component public class RedisUtils { @Autowired private RedisTemplate<String, Object> redisTemplate; public boolean set(final String key, final Object value) { try { redisTemplate.opsForValue().set(key, value); return true; } catch (Exception e) { e.printStackTrace(); return false; } } // Other CRUD methods... } ``` #### 2. `RedisKeys.java` 此部分专注于设计一套统一命名规则来帮助区分不同类型的应用场景下所使用的Key名称空间,从而提高代码可维护性的同时减少误操作的可能性。 ```java public interface RedisKeys { String USER_INFO_PREFIX = "user:info:"; // Define other keys as needed. } ``` #### 3. `UserRedis.java` 该封装层旨在简化最终使用者同上述两个模块之间的沟通流程,允许开发者仅需关注业务需求本身而不必关心底层细节处理方式。 ```java @Service public class UserRedis { @Autowired private RedisUtils redisUtils; /** * Save user information into Redis with predefined key pattern. */ public void saveUserInfo(String userId, Map<String, String> userInfo){ String key = RedisKeys.USER_INFO_PREFIX + userId; redisUtils.hmSet(key, userInfo); } // More service-level operations based on business logic. } ``` ### 安装和初步使用指南 如果打算部署本地实例,则可以根据官方文档指引选择适合操作系统版本对应的安装途径——无论是借助Linux发行版自带软件仓库里的预编译二进制包还是自行下载源码编译构建均可满足需求[^2]。一旦成功启动服务进程之后就可以尝试通过命令行客户端`redis-cli`来进行简单的测试验证工作了。 例如,可以通过下面几行Ruby脚本展示如何高效地向Redis发送大量请求,并比较不同驱动程序之间性能差异的效果[^3]: ```ruby require 'benchmark' require 'redis' %w[hiredis ruby].each do |driver| puts "\nUsing #{driver} driver:" client = Redis.new(driver: driver.to_sym) Benchmark.bm(7) do |bm| bm.report('Incrementing counter:') do client.set("counter", 0) 10_000.times { client.incr("counter") } end end end ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值