Redis学习笔记

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
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表示已过期


相关实践学习
基于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
相关文章
|
1月前
|
存储 NoSQL 应用服务中间件
Redis 学习笔记
本文详细介绍了Redis的基本概念、特性、应用场景,并提供了在Centos下安装Redis5的步骤,以及如何使用Redis客户端和命令进行数据类型操作和管理。
45 2
|
3月前
|
存储 NoSQL Redis
Redis学习笔记
这篇文章是关于Redis的学习笔记,介绍了Redis的基本概念、数据结构、持久化方式以及与其他数据库的比较,并提供了Redis的官网地址和其在数据库领域的应用场景。
|
6月前
|
存储 缓存 NoSQL
redis学习笔记
Redis是一款由C语言编写的内存中的键值对数据库,包含多种数据结构如字符串、散列、列表、集合、有序集合等。它支持复制、LUA脚本、LRU策略、事务和持久化。Redis官网提供详细文档,可用于分布式缓存、防止缓存击穿、分布式锁、消息队列等场景。安装Redis 7.0.15版,需下载、配置环境变量、修改配置文件以设置守护进程、关闭保护模式和密码。Redis基础命令包括键操作如DEL、EXISTS、EXPIRE等,数据类型包括字符串和哈希等,如HSET用于设置哈希表字段值,HGET用于获取字段值。
37 0
|
NoSQL Redis Python
redis学习笔记(九)
redis学习笔记(九)
|
NoSQL Redis
redis学习笔记(五)
redis学习笔记(五)
|
NoSQL Java Redis
redis学习笔记(二)
redis学习笔记(二)
|
NoSQL Java Redis
redis学习笔记(八)
redis学习笔记(八)
|
NoSQL 搜索推荐 Redis
redis学习笔记(六)
redis学习笔记(六)
|
NoSQL Redis
redis学习笔记(七)
redis学习笔记(七)
|
缓存 NoSQL Redis
redis学习笔记(十)
redis学习笔记(十)