redis

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: redis


一、数据库分类

数据库模型:

   网状:第一代模型,实现太难,基本上没有成体数据库

   层次:第二代模型,可以实现,ibm

   关系:第三代模型,当前传统主流,oracle、ibm db2、sql server、mysql、postgresql(greenplum)

   非关系:

           文档:mongodb

           键值对:redis

           存储引擎:elasticsearch

         

关系和非关系数据库的区别:

   关系型: 安全、速度稍慢            

   非关系型:速度快,安全性稍差

 

二、Redis重要特性

1.速度快

 c语言写的

 代码优雅

 单线程架构,并发能力稍差,但可以用集群弥补                      

2.支持多种数据结构

 字符串,哈希,列表,集合,有序集合

3.丰富的功能

 天然计数器

 健过期功能

 消息队列

4.支持客户端语言多

 php,java,python

5.数据持久化(memcache 无法持久化)

 所有的数据都运行在内存中

 支持2种格式持久化数据AOF RDB AOF&RDB

6.自带多种高可用架构

 主从

 哨兵

 集群

 

三、redis应用场景

1.缓存-键过期时间

 把session会话存在redis,过期删除

 缓存用户信息,缓存Mysql部分数据,用户先访问redis,redis没有再访问mysql

 商城优惠卷过期时间

2.排行榜-列表&有序集合

 热度/点击数排行榜

 直播间礼物积分排行

3.计数器-天然支持计数器

 帖子浏览数

 视频播放数

 评论数

 点赞/踩

4.社交网络-集合

 粉丝

 共同好友

 兴趣爱好

 标签

5.消息队列-发布订阅

 配合ELK缓存收集来的日志


#########################################################################


安装redis

1. 准备安装和数据目录

   mkdir -p /data/soft

   mkdir -p /opt/redis_cluster/redis_6379/{conf,logs,pid}


2.下载redis安装包

   cd /data/soft

   wget http://download.redis.io/releases/redis-5.0.7.tar.gz


3.解压redis到/opt/redis_cluster/  

   tar xf redis-5.0.7.tar.gz -C /opt/redis_cluster/

   ln -s /opt/redis_cluster/redis-5.0.7  /opt/redis_cluster/redis


4.切换目录安装redis

   cd /opt/redis_cluster/redis

   make && make install    


5.编写配置文件

vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
bind 127.0.0.1 192.168.8.10
port 6379
daemonize yes
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
databases 16
dbfilename redis.rdb
dir /opt/redis_cluster/redis_6379
保存退出


6.启动当前redis服务

redis-server /opt/redis_cluster/redis_6379/conf/6379.conf


7.关闭redis服务

redis-cli shutdown


8.登录redis

redis-cli  #本机登录

redis-cli -h 192.168.8.10 -p 6379    #其他主机登录



#####################################################################


redis基本操作命令

1.全局命令

 

KEYS *  #列出所有键值名,但在企业环境禁止使用
    DBSIZE  #查看有多少键值数
    EXISTS    #查看键值是否存在
    EXPIRE k2 20    #设置K2过期时间为20秒,20秒后k2自动取消
    PERSIST k2        #取消k2的过期时间
    TTL k2    #查看k2的生命周期
    TYPE    #查看数据类型


2.字符串类型:string

SET    k3 3        #创建键值
    GET    k3            #查看键值
    DEL    k2            #删除键值 
    INCR k3            #键值k3为整数,递增加1
    INCRBY k3 10      #递增k3的量值10 
    MSET k4 v4 k5 v5 k6 v6 k7 v7      #批量创建键值
    MGET k4 k5 k6 k7                #批量查看键值

3.列表:list

RPUSH list1 1 2 3 4  #创建列表list1,值为1 2 3 4
    RPUSH list1 5 6 7 8     #在list1右侧添加5 6 7 8
    LPUSH list1 0          #在list1左侧添加0
    LRANGE list1 0  -1   #查看list1所有值
    RPOP list1             #删除右侧最后一个值
    LPOP list1             #删除左侧第一个值
    LTRIM list1 0 2         #仅保留前3位,其他值删除


4.哈希:hash

 

HMSET user:1000 username zhangsan age 17 job it  #创建hash键值user:1000 
    HGET user:1000 username                #查看键值中username参数
    HGET user:1000 age                #查看键值中age参数
    HGET user:1000 job                 #查看键值中job参数
    HMSET user:1000 tel 18866668888             #添加值tel

5.集合:set

 

SADD set1 1 2 3        #创建集合set1
    SMEMBERS set1        #查看集合set1
    SADD set1 1 4        #为集合set1添加值1 4 ,但集合特性是去除重复,所以1无法再添加
    SREM set1 1 4        #删除集合的值1 4
    sadd set2 1 4 5        #创建第二个集合set2
    SDIFF set1 set2        #求差集
    SINTER set1 set2    #求交集
    SUNION set1 set2    #求并集


#########################################################################


1.redis持久化:

   RDB:生成时间点快照,保存于硬盘

       优点:速度快,适合做备份,能做主从复制,单开子进程进行rdb操作不影响主业务

       缺点:会有部分数据丢失

     

   AOF:记录所有写操作命令,通过再次执行这些命令还原数据

       优点:最大程度保证数据不丢失

       缺点:日志记录量太大


2.RDB配置:

redis-cli    登录redis
bgsave        rdb保存命令
vim /opt/redis_cluster/redis_6379/conf/6379.conf    
添加:
save 900 1           #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10          #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000        #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照

3.AOF配置

vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
appendonly yes            #启用AOF持久化
appendfilename "redis.aof"    #指定AOF文件名
appendfsync everysec        #每秒同步一次

4.重启redis

redis-cli shutdown
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf

########################################################################


环境:

   主服务器:192.168.8.10

   从服务器:192.168.8.20


1.redis主从复制  

      为解决单点故障把数据复制到一个或多个副本副本服务器(从服务器),实现故障恢复和负载均衡    


2.开启第二台服务器,安装redis

(1)把第一台服务器的redis安装目录,scp到第二台服务器上

   scp -rp /opt/redis_cluster/ root@192.168.8.20:/opt

(2)在第二台服务器上,make install安装redis

 

cd /opt/redis_cluster/redis
    make install
    vim /opt/redis_cluster/redis_6379/conf/6379.conf 
    修改:
    bind 127.0.0.1 192.168.8.20
    slaveof 192.168.8.10 6379
    保存退出

(3)启动服务

   redis-server /opt/redis_cluster/redis_6379/conf/6379.conf

(4)主服务器上新建键值,测试从服务器自动同步


(5)从服务器在同步过程中,只能复制主数据库的数据,不能手动添加修改数据;

   如果从服务器非要修改数据,需要断开同步:

   redis-cli slaveof no one  


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
存储 NoSQL 关系型数据库
【初识Redis】
【初识Redis】
40 2
|
6月前
|
监控 NoSQL 算法
Redis为什么这么快
Redis为什么这么快
36 4
|
6月前
|
存储 NoSQL Redis
Redis介绍以及日常使用
​ 介绍 Redis(REmote DIctionary Server)是一个开源的、使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、非关系类型的Key-Value数据库。它提供了多种语言的API,如Java、C/C++、C#、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等,使得在各种语言环境下使用Redis都变得非常方便。 Redis是一个高性能的Key-Value数据库,其性能在很大程度上补偿了如Memcached这类Key-Value存储的不足,并且在某些场景下,它还可以作为关系数据库的良好补充。它支持的数据结构类型
181 1
|
6月前
|
缓存 NoSQL 数据库
Redis的三剑客
Redis的三剑客
|
存储 NoSQL Linux
Redis之Redis为什么这么快解读
Redis之Redis为什么这么快解读
|
消息中间件 缓存 NoSQL
### 1.2 使用Redis能做什么
### 1.2 使用Redis能做什么
38 0
|
消息中间件 存储 负载均衡
|
监控 NoSQL Java
|
存储 缓存 NoSQL
|
存储 缓存 NoSQL
Redis为什么那么快
Redis为什么那么快
114 1
Redis为什么那么快