key-value数据库-Redis

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 1.简介 Redis是完全开源的ANSI C语言编写、遵守BSD协议,高性能的key-value数据库。 1.1特点 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

1.简介

Redis是完全开源的ANSI C语言编写、遵守BSD协议,高性能的key-value数据库。

1.1特点

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

1.2优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

2.安装

 2.1windows安装

   在  https://github.com/MicrosoftArchive/redis/releases下下载Redis-x64-3.2.100.zip。

将下载的包移动到c盘下,新建redis文件夹,将压缩包在redis文件夹下解压。

打开一个 cmd 窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.windows.conf 。

C:\redis> redis-server.exe redis.windows.conf
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.2.100 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 11604
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-' `-._ _.-' `-.__.-'  [11604] 24 Nov 11:04:00.253 # Server started, Redis version 3.2.100

这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。

切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。

设置键值对 set myKey abc

取出键值对 get myKey

3.配置

3.1获取配置

 #CONFIG GET *

3.2便捷配置

#CONFIG SET loglevel "notice"

4.数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

5.命令

 5.1基本命令

启动redis客户端:redis-cli

检测redis服务是否启动:ping  -----》返回pong

 连接远程:redis-cli -h 127.0.0.1 -p 6379 -a "mypass"

 5.2键(key)

 增:SET keyname redis  ---key后面跟key的名称和key的值

 删:del keyname

 改:EXPIRE yhkey 60  ---修改key的过期时间、EXPIRE以秒计算、  PEXPIRE 以毫秒计算   

       ttl myname -----修改key永不过期

       rename key yhkey9

查:keys * 查询所有key

      keys  yh* 过滤出包含yh的key

      exists keyname  判断key是否存在

       pttl mekey查找key的剩余时间

 5.3Redis-String

增:SET keyname2 "hello myname is yaohong, what is your name?"

查:GET keyname2

截取字符串:GETRANGE keyname2 2 14

同时获取多个字符串:MGET yhkey1 yhkey3

 5.4Redis-Hash

增:hmset(同时将多个file-value设置到hash表中)、hget

删:hdel

查:hget、hgetall、hkey获取hash表中所有域(file)、

  hmget myhash file1 file2 file3(返回哈希表中,一个或多个给定字段的值)

      hvals获取哈希表中所有值

 判:hexists 判断是否存在

       hlen获取file个数

5.5Redis-List

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

增:lpush(头部插入元素)、rpush(尾部插入元素)

删:lpop(移除列表第一个元素)、rpop(移除列表最后一个元素)、lrem keyname count value(count大于0从头部开始删除value元素)

查:llen(获取列表长度)、lreng key start stop(获取start到stop的元素)

改:lset、rset

5.6Redis-Set

增:sadd、

      sunionstore  myset myset1 myset2  命令将给定集合的并集存储在指定的集合 myset中

删:spop移除集合中随机数

      srem按值移除集合中元素

查:smembers、scard(获取成员数)、

      sdiff(列出第一个集合拥有,第二个集合没有的元素)、

      sdiffstore(将第一个集合拥有,第二个集合没有的元素保存到第三个集合中)、

      sinter(列出两个集合的交集)

      smembers列出集合所有成员

改:smove  myset1 myset2 "key1"   将key1从myset1移到myset2

判:sismember 判断元素是否是key的成员

5.7Redis-ZSet

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

增:zadd keyname scoren value

删:zrem keyname nember 移除有序集合中的一个或多个成员

      zremrangebylex key min max 移除有序集合中给定的字典区间的所有成员。

      zremrangebyrank key start stop  移除有序集合中给定的排名区间的所有成员

      zremrangebyscore key min max  移除有序集合中给定的分数区间的所有成员

查:zcard 获取集合的成员数

      zcount key min max 计算在有序集合中指定区间分数的成员数 

      zrange key start stop WITHSCORES 通过索引区间返回有序集合成指定区间内的成员

5.8事务

Redis 事务可以一次执行多个命令

开始事务:MULTI

执行事务:EXEC

取消事务:DISCARD    取消事务,放弃执行事务块内的所有命令

 监视事务:WATCH      监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断

取消监视:UNWATCH   取消 WATCH 命令对所有 key 的监视。

5.9脚本

Eval 命令使用 Lua 解释器执行脚本。

5.10服务器

Redis 服务器命令主要是用于管理 redis 服务。

统计参数:INFO

重置 INFO 命令中的某些统计数据:config resetstat

键数:dbsize

 删除所有key:flushall

删除当前数据库key:flushdb

异步保存数据到硬盘:save

6.Redis高级

6.1Redis 数据备份与恢复

备份:save

恢复:1:将生成的rdb文件移动到 redis 安装目录(执行config get dir)并启动服务即可

创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。

6.2Redis 安全

设置密码:config set requirepass "itnihao"
auth itnihao 获取密码:CONFIG get requirepass

6.3Redis 性能测试

6.4Redis 客户端连接

查看最大连接数:config get maxclients

设置最大连接数:redis-server --maxclients 100000

6.5Redis 管道技术

Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。

6.6Redis 分区

分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集。

相关实践学习
基于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
目录
相关文章
|
5月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
18天前
|
存储 缓存 NoSQL
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
|
6月前
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介
|
5月前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
900 2
|
6月前
|
存储 缓存 NoSQL
Redis内存管理揭秘:掌握淘汰策略,让你的数据库在高并发下也能游刃有余,守护业务稳定运行!
【8月更文挑战第22天】Redis的内存淘汰策略管理内存使用,防止溢出。主要包括:noeviction(拒绝新写入)、LRU/LFU(淘汰最少使用/最不常用数据)、RANDOM(随机淘汰)及TTL(淘汰接近过期数据)。策略选择需依据应用场景、数据特性和性能需求。可通过Redis命令行工具或配置文件进行设置。
121 2
|
6月前
|
JSON NoSQL Redis
Redis 作为向量数据库快速入门指南
Redis 作为向量数据库快速入门指南
307 1
|
6月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
2月前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
181 85
|
4月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
96 6
|
18天前
|
缓存 NoSQL 关系型数据库
云端问道21期实操教学-应对高并发,利用云数据库 Tair(兼容 Redis®)缓存实现极速响应
本文介绍了如何通过云端问道21期实操教学,利用云数据库 Tair(兼容 Redis®)缓存实现高并发场景下的极速响应。主要内容分为四部分:方案概览、部署准备、一键部署和完成及清理。方案概览中,展示了如何使用 Redis 提升业务性能,降低响应时间;部署准备介绍了账号注册与充值步骤;一键部署详细讲解了创建 ECS、RDS 和 Redis 实例的过程;最后,通过对比测试验证了 Redis 缓存的有效性,并指导用户清理资源以避免额外费用。