Redis学习笔记

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



1、NoSQL数据库简介

1.1、技术发展

技术的分类

1、解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN

2、解决扩展性的问题:Struts、Spring、SpringMVC、Hibernate、Mybatis

3、解决性能的问题:NoSQL、Java线程、Hadoop、Nginx、MQ、ElasticSearch 解决并发等问题

NoSQL是为了解决性能问题而产生的技术 Redis就是典型的NOSQL

1.1.1.Web1.0时代

Web1.0的时代,数据访问量很有限,用一夫当关的高性能的单点服务器可以解决大部分问题。

1.1.2.Web2.0时代

随着Web2.0的时代的到来,用户访问量大幅度提升,同时产生了大量的用户数据。加上后来的智能移动设备的普及,所有的互联网平台都面临了巨大的性能挑战。

1.1.3.解决CPU及内存压力

分布式 集群方式做架构

session共享问题 以及数据库压力问题

1.1.4.解决IO压力

总结:

1.NOSQL能解决CPU及内存压力和解决IO压力,直接通过内存进行读取
2.NOSQL能够 通过缓存使用 提高访问速度 减少IO的读操作

1.2.NoSQL数据库

NoSQL数据库概述

NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,泛指 非关系型的数据库。

NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力

  • 不遵循SQL标准。
  • 不支持ACID。(事务特性)原子性 、一致性、隔离性、持久性
  • 远超于SQL的性能。(不按照业务逻辑方式存储)

NoSQL适用场景

  • 对数据高并发的读写(秒杀功能)
  • 海量数据的读写
  • 对数据高可扩展性的

NoSQL不适用场景

  • 需要事务支持
  • 基于sql的结构化查询存储,处理复杂的关系,需要即席查询。
    即席查询(用户根据自己的需求,灵活的选择查询条件,系统能根据用户的选择生成响应的统计报表)

Memcache 支持数据单一,不支持持久化

Redis 持久化 多数据结构存储

持久化:关了电脑后数据还存在

MongoD 文档型数据库 存储数据结构更复杂

行式存储数据库(大数据时代)

行式数据库

列式数据库

Hbase

HBase是Hadoop项目中的数据库。它用于需要对大量的数据进行随机、实时的读写操作的场景中。

HBase的目标就是处理数据量非常庞大的表,可以用普通的计算机处理超过10亿行数据,还可处理有数百万元素的数据表。

图关系型数据库

主要应用:社会关系,公共交通网络,地图及网络拓谱(n*(n-1)/2)

DB-Engines 数据库排名

http://db-engines.com/en/ranking

2.Redis概述安装

2.1.应用场景

配合关系型数据库做高速缓存

  • 高频次,热门访问的数据,降低数据库IO
  • 分布式架构,做session共享

多样的数据结构存储持久化数据

2.2.Redis安装

Redis官方网站 http://redis.io

Redis中文官方网站 http://redis.cn/

安装版本

  • 6.2.1 for Linux(redis-6.2.1.tar.gz)
  • 不用考虑在windows环境下对Redis的支持

VM+Centos7+Xshell安装教程(齐全)

链接:https://pan.baidu.com/s/1nPa_b6KLWo-2_opwYOAHWQ

提取码:wuq8

CentOS官网下载页面地址:http://vault.centos.org/

CentOS7.4的安装包:

链接:https://pan.baidu.com/s/1cRgNfZ5REf4LQMIyl5K3hQ

提取码:lp6q

docker安装部署Redis

1.Docker安装

环境:CentOS 7

1.先卸载原有的docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.通过仓库安装

sudo yum install -y yum-utils

3.设置阿里云镜像的仓库

sudo yum-config-manager \
    --add-repo \
  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.更新软件包索引

yum makecache fast

5.安装docker

sudo yum install docker-ce docker-ce-cli containerd.io

6启动docker

sudo systemctl start docker

7.验证(查看版本)

docker version

.查看镜像

docker images

2.Redis安装部署

``

1.搜索redis

docker search redis

2.拉取指定版本

docker pull redis:6.2.3

3.下载最新的redis

docker pull redis:latest

4.配置

mkdir -p /usr/local/redis/conf
touch /usr/local/redis/conf/redis.conf

vim /usr/local/redis/conf/redis.conf

#持久化
appendonly yes
#密码
requirepass 123456

5.启动redis

docker run -p 6379:6379 --name myredis \
-v /usr/local/redis/data:/data \
-v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis:6.2.3 redis-server /etc/redis/redis.conf
--appendonly yes \
--requirepass "root"

说明:

–name redis 【容器名】

-p 6379:6379 【映射端口】

-v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf【conf文件挂载目录】

-v /usr/local/redis/data:/data \【data挂载目录】

-d redis:6.2.3【后台运行镜像】

–restart=always 【docker重启后自动启动镜像】

redis-server /etc/redis/redis.conf 【在容器执行redis-server启动命令,执行conf文件】

–appendonly yes 【持久化】

–requirepass “root” 【设置密码】

6.查看活跃的容器

docker ps 查看已运行容器

docker ps -a 查看所有已产生的容器(包括没有启动的容器)。

docker rm 容器id删除指定id的容器

docker images查看所有镜像

docker rmi 镜像id删除指定id的镜像,注意,如果此镜像已经run产生了容器,要先删除容器,再删除镜像,否则会报错:

使用RedisDesktopManager测试连接

出现以下图片连接成功

Redis介绍相关知识

默认16个数据库,类似数组下标从0开始,初始默认使用0号库

使用命令 select 来切换数据库。如:select 1

统一密码管理,所有库同样密码。

dbsize查看当前数据库的key的数量

flushdb清空当前库

flushall通杀全部库

Memcache和redis区别

串行 vs 多线程+锁(memcached) vs 单线程+多路IO复用(Redis)

(与Memcache三点不同: 支持多数据类型,支持持久化,单线程+多路IO复用)

3.常用五大数据类型

哪里去获得redis常见数据类型操作命令http://www.redis.cn/commands.html

3.1.Redis键(key)

进入容器连接redis

docker exec -it myredis redis-cli myredis 容器名

这里进入之后 需要认证密码 auth "123456"

在使用select 1切换数据库

DBSIZE:查询当前库所有key的数量

keys *:查询当前库所有的key

exists key:查询是否存在,是返回1,否返回0

set key 设置一个key

127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379>  exists k1
(integer) 1
127.0.0.1:6379> exists k2
(integer) 0

move key db:把当前库的指定key移到指定的库中

127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> MOVE k2 1
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get k2
"v2"

expire key:给指定key设置生存时间,单位为秒,生存时间结束将被系统内存回收

ttl key:查询指定key的生存时间。-1表示永不过期,-2表示已过期

127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> ttl k2
(integer) -1
127.0.0.1:6379> EXPIRE k2 10
(integer) 1
127.0.0.1:6379> ttl k2
(integer) 8
127.0.0.1:6379> ttl k2
(integer) 4
127.0.0.1:6379> ttl k2
(integer) -2
127.0.0.1:6379> get k2
(nil)

type key:查询指定key的数据结构类型

127.0.0.1:6379> lpush list 1 2 3 4
(integer) 4
127.0.0.1:6379> type k1
string
127.0.0.1:6379> type list
list

unlink key 根据value选择非阻塞删除

expire key 10 10秒钟:为给定的key设置过期时间

ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期


相关文章
|
11月前
|
存储 Java 关系型数据库
高效连接之道:Java连接池原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。频繁创建和关闭连接会消耗大量资源,导致性能瓶颈。为此,Java连接池技术通过复用连接,实现高效、稳定的数据库连接管理。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接池的基本操作、配置和使用方法,以及在电商应用中的具体应用示例。
271 5
|
8月前
2024阿里云技术年报 基础设施篇
2024阿里云技术年报基础设施篇
215 14
2024阿里云技术年报 基础设施篇
|
9月前
|
Kubernetes 网络协议 Shell
【赵渝强老师】K8s中Pod探针的ExecAction
在K8s集群中,kubelet通过三种探针(存活、就绪、启动)检查容器健康状态,支持HTTPGet、Exec和TCP检查方式。本文重点介绍ExecAction探针,通过在容器内执行Shell命令返回码判断健康状态,并附带视频讲解和实例演示,展示如何配置和使用ExecAction探针进行健康检查。
181 10
【赵渝强老师】K8s中Pod探针的ExecAction
|
10月前
|
存储 弹性计算 运维
端到端的ECS可观测性方案,助力云上业务安全稳定
本文介绍了云原生时代保障业务系统可靠性的方法和挑战,重点探讨了阿里云ECS在提升业务稳定性、性能监控及自动化恢复方面的能力。文章分为以下几个部分:首先,阐述了业务可靠性的三个阶段(事前预防、事中处理、事后跟进);其次,分析了云上业务系统面临的困难与挑战,并提出了通过更实时的监测和自动化工具有效规避风险;接着,详细描述了ECS实例稳定性和性能问题的解决方案;然后,介绍了即将发布的ECS Lens产品,它将全面提升云上业务的洞察能力和异常感知能力;最后,通过具体案例展示了如何利用OS自动重启和公网带宽自适应调节等功能确保业务连续性。总结部分强调了ECS致力于增强性能和稳定性的目标。
|
11月前
|
运维 Kubernetes Cloud Native
深入理解云原生架构:从理论到实践
【10月更文挑战第38天】本文将引导读者深入探索云原生技术的核心概念,以及如何将这些概念应用于实际的软件开发和运维中。我们将从云原生的基本定义出发,逐步展开其背后的设计哲学、关键技术组件,并以一个具体的代码示例来演示云原生应用的构建过程。无论你是云原生技术的初学者,还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和实操指南。
|
12月前
|
人工智能
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
236 2
|
Ubuntu 机器人 虚拟化
Ubuntu22.04配置ROS2 Humble
这篇文章是关于如何在Ubuntu 22.04系统上配置ROS2 Humble的详细教程,包括虚拟机安装、环境配置、网络设置、软件源更换、ROS1和ROS2的安装步骤。
3181 1
|
Kubernetes 安全 API
k8s-身份认证与权限
k8s-身份认证与权限
252 1
|
存储 Kubernetes Docker
k8s-配置与存储-配置管理
k8s-配置与存储-配置管理
236 1