`

Redis系列之Reids介绍

 
阅读更多

 

1.什么是redis

redis是一种基于键值对(key-value)数据库,其中value可以为string、hash、list、set、zset等多种数据结构,可以满足很多应用场景。还提供了键过期,发布订阅,事务,流水线,等附加功能,

流水线: Redis 的流水线功能允许客户端一次将多个命令请求发送给服务器, 并将被执行的多个命令请求的结果在一个命令回复中全部返回给客户端, 使用这个功能可以有效地减少客户端在执行多个命令时需要与服务器进行通信的次数。

2. redis有哪些特性

1〉速度快,数据放在内存中,官方给出的读写性能10万/S,与机器性能也有关

  a. 数据放内存中是速度快的主要原因

  b. C语言实现,与操作系统距离近

  c. 使用了单线程架构,预防多线程可能产生的竞争问题

2〉键值对的数据结构服务器

3〉丰富的功能:键过期,发布订阅,事务,流水线.....

4〉简单稳定:单线程

5〉持久化:发生断电或机器故障,数据可能会丢失,持久化到硬盘

6〉主从复制:实现多个相同数据的redis副本

7〉高可用和分布式:哨兵机制实现高可用,保证redis节点故障发现和自动转移

8〉客户端语言多:java php python c c++ nodejs等

3. redis有哪些应用场景

1. 缓存:合理使用缓存加快数据访问速度,降低后端数据源压力

2. 排行榜:按照热度排名,按照发布时间排行,主要用到列表和有序集合

3. 计数器应用:视频网站播放数,网站浏览数,使用redis计数

4. 社交网络:赞、踩、粉丝、下拉刷新

5. 消息队列:发布和订阅

4.redis的版本

版本号第二位为奇数,为非稳定版本(2.7、2.9、3.1)

第二为偶数,为稳定版本(2.6、2.8、3.0)

当前奇数版本是下一个稳定版本的开发版本,如2.9是3.0的开发版本

 

5.全局命令

 keys *  查看所有键

 dbsize 查看的是当前所在redis数据库的键总数 如果存在大量键,线上禁止使用此指令

 exists key 检查键是否存在,存在返回1,不存在返回0

 del key 删除键,返回删除键个数,删除不存在键返回0

 expire key seconds  设置键过期的时间,单位是秒,  //set name lgs  expire name 10 //10秒过期

 ttl key 查看键剩余的过期时间,和expire配合使用

type key 查看键的数据结构类型: //type name  //返回string,键不存在返回none

 

6.redis键管理

 键重命名

rename oldKey newkey //格式
rename oldKey newKey //若oldKey之前存在则被覆盖
set name james ;set name1 mike //数据初始化
renamenx name name1 //重命名失败,只有当name1不存在才能改名

返回随机键

randomkey //返回随机键

键过期

expire name:03 20 //键name:03 在10秒后过期
ttl name:03 //查看过期按秒到计时,当返回-2说明已删除
pttl name:03 //查看过期按毫秒到时计
set name:05 james //初始化数据
pexpire name:05 20000 //20000毫秒(20S)后过期
expire name:06 -2 //直接过期,和del一样


设置键在某个时间点过期 使用的是时间戳 
expireat name:04 1516971599 //设置在2018/01/27 20:59:59过期
时间转时间戳:网址http://tool.chinaz.com/Tools/unixtime.aspx

hset user:01 name james //初始化数据
expire user:01 60 //设置60S后过期
ttl user:01 //查看过期剩余时间
persist user:01 //去掉过期
ttl user:1 //返回-1 可以永久查询不失效

注意:对于字符串重设值后,expire无效,
set name james
expire name 50
ttl name
set name james1 //此时expire取消
ttl name //返回-1, 长期有效

键的迁移

把部分数据迁移到另一台redis服务器

1, move key db  //reids有16个库, 编号为0-15

 set name james1;  move name 5 //迁移到第6个库

 select 5 ;//数据库切换到第6个库, get name  可以取到james1

 这种模式不建议在生产环境使用,在同一个reids里可以玩

2, dump key; 

 restore key ttl value//实现不同redis实例的键迁移,ttl=0代表没有过期时间

例子:在A服务器上 192.168.1.111

set name james;

dump name; //  得到"\x00\x05james\b\x001\x82;f\"DhJ"

在B服务器上:192.168.1.118

restore name 0 "\x00\x05james\b\x001\x82;f\"DhJ" 

get name  //返回james

3,migrate指令迁移到其它实例redis,在1.111服务器上将test移到118

migrate

192.168.1.118

6379  

test

0

1000

copy

replace

keys

指令

要迁移的目标IP

端口

迁移键值

目标库

超时时间

迁移后不删除原键

不管目标库是不存在test键都迁移成功

迁移多个键

键的遍历

redis提供了两个命令来遍历所有的键

1,键全量遍历:

mset country china city bj name james  //设置3个字符串键值对 

keys  * //返回所有的键, *匹配任意字符多个字符

keys *y //以结尾的键, 

keys n*e //以n开头以e结尾,返回name

keys n?me  //  ?问号代表只匹配一个字符  返回name,全局匹配 

keys n?m*   //返回name

keys [j,l]*  //返回以j l开头的所有键  keys [j]ames 全量匹配james

考虑到是单线程, 在生产环境不建议使用,如果键多可能会阻塞,如果键少,可以

2,渐进式遍历

mset  a a b b c c d d e e f f g g h h i i j j k k l l m m n n o o p p q q r r s s t t u u v v w w x x y y z z    //初始化26个字母键值对

字符串类型: 

scan 0 match n* count 20 //匹配以n开头的键,取20条,第一次scan 0开始

第二次从游标10开始取20个以n开头的键,相当于一页一页的取,当最后返回0时,键被取完

 

注:渐进式遍历可有效地解决keys命令可能产生的阻塞问题
除scan字符串外:还有以下
SCAN 命令用于迭代当前数据库中的数据库键。
SSCAN 命令用于迭代集合键中的元素。
HSCAN 命令用于迭代哈希键中的键值对。
ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。
用法和scan一样

7.redis数据库管理

select 0 //共16个库, 0 --15, select切换数据库
set name james
select 1
get name //隔离了,取不到,和mysql不同库一样

其中redis3.0以后的版本慢慢弱化了这个功能,如在redis cluster中只允许0数据库
原因:
1,redis单线程,如果用多个库,这些库使用同一个CPU,彼此会有影响
2,多数据库,调试与运维麻烦,若有一个慢查询,会影响其它库查询速度
3,来回切换,容易混乱

flushdb: 只清空当前数据库的键值对 dbsiz 0
flushall: 清空所有库的键值对 (这两个指令慎用!!!!)

分享到:
评论

相关推荐

    《redis介绍》PPT课件.ppt

    redis ppt 介绍

    REDIS_redis的工具包_redisinlabview_labviewredis_labview调用redis_redis

    `redisinlabview`是为LabVIEW设计的一个工具包,它提供了一系列VI(Virtual Instruments),使得LabVIEW开发者能够方便地与Redis服务器进行交互。该工具包通常包括了连接、读写、发布/订阅等基本操作,覆盖了Redis的...

    redis介绍,ppt介绍

    ppt格式的redis介绍,包括redis的原理,机制使用方法

    StackExchange.Redis Redis客户端

    最近需要在C#中使用Redis,在Redis的官网找到了ServiceStack.Redis,最后在测试的时候发现这是个坑,4.0已上已经收费,后面只好找到3系列的最终版本,最后测试发现还是有BUG或者是我不会用。没有办法,最好找到了...

    redis-windows-Redis7.0.0.zip

    此外,Redis还支持事务(Transactions),确保一系列操作的原子性。 在Windows上安装Redis 7.0.0,你需要下载对应的zip压缩包“redis-windows-redis7.0.0”。解压后,你会看到包含`redis-server.exe`、`redis-cli....

    redis在win上的运行脚本redis.bat

    下面将详细介绍Redis在Windows上的安装、配置以及使用这个批处理脚本的方法。 首先,我们需要下载Redis的Windows版本。Redis官方并不直接提供Windows二进制发行版,但社区有一些移植项目,如MSOpenTech Redis或者...

    redis 数据库 介绍.ppt

    redis 数据库 介绍

    redis客户端连接工具 RedisDesktopManager

    Redis是世界上最受欢迎的内存数据存储系统之一,常用于构建高性能、低延迟的数据缓存和数据库。RedisDesktopManager是一款跨平台的图形用户界面(GUI)工具,使得开发者和管理员能够便捷地管理和操作Redis服务器,...

    redis配置文件redis.conf

    redis配置文件redis.conf

    redis 免安装 redis客户端 redis-desktop-manager-0.8.8.384

    Redis 是一个高性能的键值数据库,它以键值对的形式存储数据,广泛应用于缓存、消息中间件、实时分析等领域。在 Windows 环境下,通常需要通过安装过程来设置 Redis 服务,但这里提供的资源是“redis 免安装”,意味...

    Redis-7.0.5-x64 for Windows 64位版 Redis 7.0.5

    在这个Windows 64位版本的Redis 7.0.5中,我们能够看到一系列关键组件和配置文件,这使得它能够在Windows环境下运行。以下是关于Redis 7.0.5及其组件的详细解释: 1. **Redis 7.0.5**: 这是Redis的最新稳定版本,它...

    Windows版 Redis 5.0.14

    Redis 是一个开源的内存数据结构存储系统,常被用作数据库、缓存和消息代理。在Windows环境下,Redis 的安装和使用与在Linux系统中有所不同。这里我们将详细讨论Windows版Redis 5.0.14的相关知识点。 1. **Redis ...

    Linux 系统 安装redis redis-5.0.1.tar.gz 安装包

    本文将详细介绍如何在Linux上安装Redis 5.0.1版本,包括下载、解压、编译和配置等步骤。 1. **下载Redis源码包**: 首先,我们需要获取Redis的源代码。你可以通过访问Redis官方网站或者使用`wget`命令从互联网下载...

    redis-5.0.3 redis-5.0.4 redis-5.0.5

    redis-5.0.3 redis-5.0.4 redis-5.0.5

    Redis两主部署

    因此,本文将详细介绍 Redis 两主部署的实现方案,确保服务的高可用性。 1.1 Redis 部署 在 Redis 两主部署中,我们需要在两台主机上安装 Redis,并配置成 master-slave 模式。同时,我们还需要使用 Sentinel 模式...

    若依前后端分离版去redis版/无redis版本

    下面我将分别介绍基于Redis和无Redis的两种版本的特点。 基于Redis的版本 特点 缓存处理:Redis作为内存数据库可以用来缓存频繁访问的数据,加快数据读取速度,减轻后端服务器压力。 会话管理:在分布式环境下,可用...

    redis.conf Redis配置文件下载

    redis.conf Redis配置文件 下载 redis.conf 配置详解 Redis配置文件redis.conf 详解1.基本配置内存单位的表示# 1k => 1000 bytes# ...Redis 的详细介绍Redis 的下载地址

    redis++使用说明,windows下编译redis-plus-plus

    在这篇文章中,我们将详细介绍如何在Windows平台下编译Redis++,包括编译hiredis.lib和Win32_Interop.lib静态库文件的过程,然后安装Cmake并编译Redis++,最后进行lib测试验证。 首先,我们需要了解Redis++的组件...

    Ubuntu安装redis和redis-php扩展

    6. 使用文本编辑器打开 `/etc/redis/redis.conf` 文件,并将 `daemonize no` 修改为 `daemonize yes`,以便 Redis 以后台进程运行: ``` vim /etc/redis/redis.conf ``` 7. 启动 Redis 服务器: ``` /usr/local/bin/...

    windows版本redis6.0.8

    本篇将详细介绍“windows版本redis6.0.8”这一绿色解压版的特点、安装与配置方法,以及如何在Windows环境下使用Redis。 首先,Redis 6.0.8是Redis的一个稳定版本,它带来了许多新特性和改进。其中最重要的改进包括...

Global site tag (gtag.js) - Google Analytics