NoSQL之Redis配置与优化

关系数据库与非关系型数据库

关系数据库
关系数据库是一种基于关系模型的数据库,它使用结构化查询语言(SQL)进行数据操作和管理。其主要特点包括:
1.数据结构化:数据按照严格的模式进行组织,表之间存在明确的关系。
例如,在一个员工信息数据库中,可能有“员工表”、“部门表”,通过“部门编号”等字段建立关联。
2.数据一致性:通过约束和规则保证数据的准确性和完整性。
比如设置主键保证每条记录的唯一性,设置外键保证数据之间的关联一致性。
3.支持复杂查询:可以使用 SQL 进行复杂的连接、聚合、排序等操作。
例如,要查询某个部门所有员工的平均工资,通过合适的 SQL 语句可以轻松实现。
常见的关系数据库有 MySQL、Oracle、SQL Server 等。


非关系型数据库
非关系型数据库也称为 NoSQL 数据库,它不遵循传统的关系模型,具有更灵活的数据模型和存储方式。其优势在于:
1.灵活性:能够轻松应对数据模式的频繁变化。
比如在处理文档型数据时,无需事先定义严格的模式。
2.高扩展性:易于水平扩展,通过增加节点来提高性能和存储能力。
像分布式的 MongoDB 集群,可以方便地添加新的服务器节点。
3.高性能:适用于处理大规模的高并发读写操作。
例如在处理海量的实时日志数据时,表现出色。
常见的非关系型数据库有 MongoDB、Redis、Cassandra 等。
总的来说,关系数据库适用于数据结构明确、对一致性和复杂查询有较高要求的场景;而非关系型数据库则更适合数据结构灵活多变、高并发、大数据量的应用场景。在实际应用中,往往会根据具体的需求和业务特点来选择合适的数据库类型。

Redis基础

Redis 是一个开源的(BSD 许可)、内存中的数据结构存储系统,可用作数据库、缓存和消息中间件。

一、数据结构

Redis 支持多种数据结构,包括:

  1. 字符串(String):可以存储字符串、整数或浮点数。例如,存储用户的积分 INCR user_score 。
  2. 哈希(Hash):适合存储对象。比如存储用户信息 HSET user:1 name "John" age 25 。
  3. 列表(List):按照插入顺序存储元素。如实现消息队列 LPUSH queue message 。
  4. 集合(Set):无序且不重复的元素集合。例如找出共同关注的用户 SINTER set1 set2 。
  5. 有序集合(Sorted Set):每个元素都关联一个分数,按分数排序。比如排行榜 ZADD rank 100 user1 。

二、持久化

Redis 提供了两种持久化方式:

  1. RDB(Redis Database):以快照的形式将数据保存到磁盘。
  2. AOF(Append Only File):将执行的写命令追加到文件中。

三、事务

Redis 事务可以一次执行多个命令,要么全部成功,要么全部失败。使用 MULTI 开始事务,EXEC 执行事务。

四、发布/订阅

Redis 支持发布/订阅模式,发布者发送消息,订阅者接收消息。

五、应用场景

  1. 缓存:加速数据读取,减轻数据库压力。
  2. 会话存储:存储用户会话信息。
  3. 排行榜:利用有序集合实现。

Redis安装部署

安装

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install gcc* zlib-devel
[root@localhost ~]# tar xvzf redis-4.0.9.tar.gz 
[root@localhost ~]# cd redis-4.0.9/ 
[root@localhost redis-4.0.9]# make
[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install 
[root@localhost ~]# ln -s /usr/local/redis/bin/* /usr/local/bin/
[root@localhost redis-4.0.9]# cd /root/redis-4.0.9/utils/
[root@localhost utils]# ./install_server.sh

Config file : /etc/redis/6379.conf    //配置文件路径

Log file : /var/log/redis_6379.log    //日志文件路径

Data dir : /var/lib/redis/6379    //数据文件路径

Executable : /usr/local/redis/bin/redis-server    //可执行文件路径

Cli Executable : /usr/local/redis/bin/redis-cli    //客户端命令行工具

查看进程

[root@localhost utils]# netstat -anpt | grep redis

服务控制

[root@localhost ~]#/etc/init.d/redis_6379 stop 
[root@localhost ~]#/etc/init.d/redis_6379 start 
[root@localhost ~]#/etc/init.d/redis_6379 restart 
[root@localhost ~]#/etc/init.d/redis_6379 status 

配置参数的修改

[root@localhost ~]#vim /etc/redis/6379.conf 
bind 127.0.0.1 192.168.10.101   	//监听的主机地址 
port 6379 		//端口 
daemonize yes 	//启用守护进程 
pidfile /var/run/redis_6379.pid 	//指定 PID 文件 
loglevel notice 	//日志级别 
logfile /var/log/redis_6379.log 	//指定日志文件 

[root@localhost~]#/etc/init.d/redis_6379 restart 
[root@localhost utils]# netstat -anpt | grep redis

Redis 命令工具

1:redis-cli 命令行工具

(1)连接本机redis

[root@localhost ~]# redis-cli

127.0.0.1:6379>

(2)测试redis服务是否启动

127.0.0.1:6379> ping

PONG

(3)远程连接

[root@localhost ~]#redis-cli -h 192.168.10.101 -p 6379

redis-benchmark 测试工具

(1)测试请求性能

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000

(2)测试存取性能

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100

1key 相关命令

使用 keys 命令可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用。

127.0.0.1:6379>set k1 1 
OK
127.0.0.1:6379>set k2 2 
OK
127.0.0.1:6379>set k3 3 
OK
127.0.0.1:6379>set v1 4 
OK
127.0.0.1:6379>set v5 5 
OK

(2)查看当前数据库中所有键

127.0.0.1:6379>KEYS  *  
1) "teacher" 
2) "k1" 
3) "k2" 
4) "k3" 
5) "v1" 
6) "v5" 
127.0.0.1:6379>set v22 5 
OK

exists

exists 命令可以判断键值是否存在

127.0.0.1:6379>exists teacher 
(integer) 1      //结果为1,表示 teacher 键是存在 ,结果为0,表示 tea 键不存在

del

del 命令可以删除当前数据库的指定 key

del v5 
(integer) 1 

type

使用 type 命令可以获取 key 对应的 value 值类型

127.0.0.1:6379>type k1 
string 

rename

rename 命令是对已有 key 进行重命名

在实际使用过程中,建议先用 exists 命令查看目标 key 是否存在,然后再决定是否执行 rename 命令,以避免覆盖重要数据

renamenx

renamenx 命令的作用是对已有 key 进行重命名,并检测新名是否存在。

使用renamenx 命令进行重命名时,如果目标 key 存在则不进行重命名。

dbsize

dbsize 命令的作用是查看当前数据库中 key 的数目。

127.0.0.1:6379> dbsize 
(integer) 5
  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值