1.redis是什么

redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。redis的官网地址,非常好记,是redis.io。目前,Vmware在资助着redis项目的开发和维护。

Redis会将所有数据都存放在内存中,所以它的读写性能拾惊人的。

Redis特性:

1)速度快

2)基于键值对的数据结构服务器

3)丰富的功能:提供了键过期功能,可用用来实现缓存。提供了发布订阅功能,用来实现消息系统。支持Lua脚本功能,可以利用Lua创造出新的Redis命令。提供了简单的事务功能,能在一定程度上保证事务特性。提供了流水线(Pipeline)功能,客户端能将一批命令一次性传到Redis,减少网络开销。

4)简单稳定

5)客户端语言多

6)持久化

7)主从复制

8)高可用和分布式

Redis可以做什么:

1)缓存

2)排行榜系统

3)计数器应用

4)社交网络

5)消息队列系统

用好Redis的建议:

1)切勿当做黑盒使用,开发与运维同样重要

2)阅读源码

2.安装redis

从redis.io下载最新版redis-X.Y.Z.tar.gz后解压,然后进入redis-X.Y.Z文件夹后直接make&& make install即可,安装非常简单。make成功后会在src文件夹下产生一些二进制可执行文件,包括redis-server、redis-cli等等:

[root@mysql1 software]# tar xvfz redis-3.2.3.tar.gz

[root@mysql1 software]# cd redis-3.2.3

[root@mysql1 src]# find . -type f -executable

安装Redis:

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

$ tar xzf redis-3.0.7.tar.gz

$ ln -s redis-3.0.7 redis

$ cd redis

$ make

$ make install

./redis-trib.rb                     //用于创建集群,检测及重新分片

./redis-check-rdb              //用于修复出问题的rdb文件

./redis-benchmark            //用于进行redis性能测试的工具

./redis-server                    //redis的服务端

./redis-cli                          //redis的客户端

./mkreleasehdr.sh

./redis-check-aof              //用于修复出问题的AOF文件

./redis-sentinel                 //用于集群管理

请参考一键安装redis脚本,InstallRedis.sh

3.启动redis

启动redis非常简单,直接./redis-server就可以启动服务端了,还可以用下面的方法指定要加载的配置文件:./redis-server ../redis.conf。默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。

有三种方法启动Redis:

默认配置、运行配置、配置文件启动

默认端口是6379

Redis命令行客户端:

交互式、命令方式

停止Redis服务:

$ redis-cli shutdown

4.使用redis客户端

[root@mysql1 src]# ./redis-cli      //启动redis客户端

127.0.0.1:6379> set name "abc"    //用set指定来设置key,value

OK

127.0.0.1:6379> get name         //来获取name的值

"abc"

127.0.0.1:6379> del name         //删除一个键值

(integer) 1

127.0.0.1:6379> ping             //用于检测 redis 服务是否启动

PONG

127.0.0.1:6379> shutdown         //通过客户端来关闭redis服务端

not connected>

修改redis配置文件,找到

#requirepass foobared

去掉注释,并修改为所需要的密码

requirepass mypass

重启redis服务

在远程服务器上执行命令

$redis-cli -h 127.0.0.1 -p 6379 -a "mypass"

redis 127.0.0.1:6379>

redis 127.0.0.1:6379> PING

redis 127.0.0.1:6379> select index   //切换到指定的数据库

redis-cli -r 5 -i 1 ping

redis-cli -r 10 -i 1 info | grep used_memory_human

echo "world" | redis-cli -x set hello  -x选项代表从标准输入读取数据作为redis-cli的最后一个参数

redis-cli --latency 可以测试客户端到目标Redis的网络延迟

redis-cli --bigkeys 使用scan命令对Redis的键进行采样,从中找到内存占用比较大的键值,这些键值可能是系统的瓶颈

[p2p@pbp2pap11 ~]$ redis-cli -h 127.0.0.1 -a "redis4p2p" keys "H5_USERIDTOKENMAPPING-*" | xargs redis-cli -h 127.0.0.1 -a "redis4p2p" del

(integer) 433

[p2p@pbp2pap11 ~]$ redis-cli -h 127.0.0.1 -a "redis4p2p" keys "H5_TOKEN-*" | xargs redis-cli -h 127.0.0.1 -a "redis4p2p" del

(integer) 3119

(integer) 3119

(integer) 3119

(integer) 663

Pipeline:将一组Redis命令进行组装,通过一次RTT传输给Redis,再将这组Redis命令的执行结果按顺序返回给客户端

客户端通信协议:TCP,RESP

客户端管理:

对比client list和info clients监控输入缓冲区的优劣势

client list 能精确分析每个客户端来定位问题

info clients 执行速度快,分析过程较为简单

客户端常见异常

客户端案例分析:

Redis内存陂增:注意监控monitor命令的执行

客户端周期性超时:注意监控慢查询

Redis客户端相关的更多相关文章

  1. Redis客户端管理

    1.客户端管理 Redis提供了客户端相关API对其状态进行监控和管理,本节将深入介绍各个API的使用方法以及在开发运维中可能遇到的问题. 1.1 客户端API 1.client list clien ...

  2. StackExchange.Redis客户端读写主从配置,以及哨兵配置。

    今天简单分享一下StackExchange.Redis客户端中配置主从分离以及哨兵的配置. 关于哨兵如果有不了解的朋友,可以看我之前的一篇分享,当然主从复制文章也可以找到.http://www.cnb ...

  3. 使用StackExchange.Redis客户端进行Redis访问出现的Timeout异常排查

    问题产生 这两天业务系统在redis的使用过程中,当并行客户端数量达到200+之后,产生了大量timeout异常,典型的异常信息如下: Timeout performing HVALS Parser2 ...

  4. Redis客户端之Spring整合Jedis,ShardedJedisPool集群配置

    Jedis设计 Jedis作为推荐的java语言redis客户端,其抽象封装为三部分: 对象池设计:Pool,JedisPool,GenericObjectPool,BasePoolableObjec ...

  5. "Redis客户端连接数一直降不下来"的有关问题解决

    [线上问题] "Redis客户端连接数一直降不下来"的问题解决 前段时间,上线了新的 Redis缓存(Cache)服务,准备替换掉 Memcached. 为什么要将 Memcach ...

  6. redis客户端可以连接集群,但JedisCluster连接redis集群一直报Could not get a resource from the pool

    一,问题描述: (如题目)通过jedis连接redis单机成功,使用JedisCluster连接redis集群一直报Could not get a resource from the pool 但是使 ...

  7. 如何编写入门级redis客户端

    概述 Redis是开源的.基于内存的数据结构存储系统,可用作数据库.缓存以及消息代理方面.Redis支持许多种数据结构,并内置了丰富的诸如冗余.脚本.事务.持久化等功能,深受业界喜爱,被各种业务系统广 ...

  8. Netty开发redis客户端,Netty发送redis命令,netty解析redis消息

    关键字:Netty开发redis客户端,Netty发送redis命令,netty解析redis消息, netty redis ,redis RESP协议.redis客户端,netty redis协议 ...

  9. 4.Redis客户端

    4.Redis客户端4.1 客户端通信协议4.2 Java客户端Jedis4.2.1 获取Jedis4.2.2 Jedis的基本使用方法4.2.3 Jedis连接池的使用方法4.2.4 Redis中P ...

随机推荐

  1. HDU 2176 取(m堆)石子游戏 —— (Nim博弈)

    如果yes的话要输出所有情况,一开始觉得挺难,想了一下也没什么. 每堆的个数^一下,答案不是0就是先取者必胜,那么对必胜态显然至少存在一种可能性使得当前局势变成必败的.只要任意选取一堆,把这堆的数目变 ...

  2. Leetcode题目238.除自身以外数组的乘积(中等)

    题目描述: 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积. 示例: ...

  3. SRS之SrsHls::on_video详解

    1. SrsHls::on_video /* * mux the video packets to ts. * @param shared_video, directly ptr, copy it i ...

  4. 【互联网运营P1】

    一.导论 [运营]是什么 二.运营的职业分工和职能发展 三.转化型文案 4个高转化率短文案的常见姿势 2个短文案写作的核心要则 中长型转化文案的写作 针对所有问题点依次进行详细解读 四.第三方推广 常 ...

  5. vlc命令行: 转码 流化 推流

    vlc命令行: 转码 流化 推流 写在命令行之前的话: VLC不仅仅可以通过界面进行播放,转码,流化,也可以通过命令行进行播放,转码和流化.还可以利用里面的SDK进行二次开发. vlc命令行使用方法: ...

  6. R语言与概率统计(四) 判别分析(分类)

    Fisher就是找一个线L使得组内方差小,组间距离大.即找一个直线使得d最大. ####################################1.判别分析,线性判别:2.分层抽样 #inst ...

  7. MATLAB学习(一)数组、变量、表达式、常用简单运算

    >> x=[1 2 3;4 5 6;7 8 9] x = 1 2 3 4 5 6 7 8 9 >> y=[1,2,3] y = 1 2 3 >> y=[1,2,3 ...

  8. Linux 上svn使用http访问设置

    https://blog.csdn.net/wobuxingfang/article/details/70835414https://blog.csdn.net/u010487568/article/ ...

  9. mysql innodb阻塞分析

    http://blog.csdn.net/hw_libo/article/details/39080809

  10. What happens when you type an URL in the browser and press enter?

    What happens when you type an URL in the browser and press enter? 1. You type maps.google.com into t ...