Redis客户端相关
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客户端相关的更多相关文章
- Redis客户端管理
1.客户端管理 Redis提供了客户端相关API对其状态进行监控和管理,本节将深入介绍各个API的使用方法以及在开发运维中可能遇到的问题. 1.1 客户端API 1.client list clien ...
- StackExchange.Redis客户端读写主从配置,以及哨兵配置。
今天简单分享一下StackExchange.Redis客户端中配置主从分离以及哨兵的配置. 关于哨兵如果有不了解的朋友,可以看我之前的一篇分享,当然主从复制文章也可以找到.http://www.cnb ...
- 使用StackExchange.Redis客户端进行Redis访问出现的Timeout异常排查
问题产生 这两天业务系统在redis的使用过程中,当并行客户端数量达到200+之后,产生了大量timeout异常,典型的异常信息如下: Timeout performing HVALS Parser2 ...
- Redis客户端之Spring整合Jedis,ShardedJedisPool集群配置
Jedis设计 Jedis作为推荐的java语言redis客户端,其抽象封装为三部分: 对象池设计:Pool,JedisPool,GenericObjectPool,BasePoolableObjec ...
- "Redis客户端连接数一直降不下来"的有关问题解决
[线上问题] "Redis客户端连接数一直降不下来"的问题解决 前段时间,上线了新的 Redis缓存(Cache)服务,准备替换掉 Memcached. 为什么要将 Memcach ...
- redis客户端可以连接集群,但JedisCluster连接redis集群一直报Could not get a resource from the pool
一,问题描述: (如题目)通过jedis连接redis单机成功,使用JedisCluster连接redis集群一直报Could not get a resource from the pool 但是使 ...
- 如何编写入门级redis客户端
概述 Redis是开源的.基于内存的数据结构存储系统,可用作数据库.缓存以及消息代理方面.Redis支持许多种数据结构,并内置了丰富的诸如冗余.脚本.事务.持久化等功能,深受业界喜爱,被各种业务系统广 ...
- Netty开发redis客户端,Netty发送redis命令,netty解析redis消息
关键字:Netty开发redis客户端,Netty发送redis命令,netty解析redis消息, netty redis ,redis RESP协议.redis客户端,netty redis协议 ...
- 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 ...
随机推荐
- 求两个排序数组的交集和并集----时间复杂度O(n+m)
问题: 给你两个排序的数组,求两个数组的交集. 比如: A = 1 3 4 5 7, B = 2 3 5 8 9, 那么交集就是 3 5,n是a数组大小,m是b数组大小. 思路: (1)从b数组遍历取 ...
- 利用JDK自带工具监控JVMCPU和内存指标
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- 尚硅谷周阳老师-redis脑图课件
因为脑图原件是.mmap格式,使用wps和xmind打开都会有格式不兼容的问题,这里我们可以使用mindmanager存为html5交互式格式, 提供在线阅读.因为阿里云学生服务器带宽有限,这里打开加 ...
- Nginx之 Location 的生成
1. Location 的生成 location 的生成大致有三种: 由 location 指令直接生成 命令 location:仅用于 server 内部跳转,如 rewrite 就是命名 loca ...
- A*算法解决15数码问题_Python实现
1问题描述 数码问题常被用来演示如何在状态空间中生成动作序列.一个典型的例子是15数码问题,它是由放在一个4×4的16宫格棋盘中的15个数码(1-15)构成,棋盘中的一个单元是空的,它的邻接单元中的数 ...
- No hash for parcel CDH-XXX.parcel.torrent
在安装 CDH 时,到 Install Parcels 这一步,分发 Parcels 一直过不去,界面一直报 Failure due to stall on seeded torrent,查看日志一直 ...
- P5020 货币系统
P5020 货币系统 题解 仔细分析... 这道题其实就是求所给数组中有多少个数字不能被该数组中的数字自由组合表示出来 比如样例1 3,10 不能被该集合里的数字表示出来,所以他们组成目标集合 6=3 ...
- application节点
<application>节点是AndroidManifest.xml文件中必须持有的一个节点,它包含在<manifest>节点下.通过<application>节 ...
- python写入csv方法总结
最常用的一种方法,利用pandas包 import pandas as pd #任意的多组列表 a = [1,2,3] b = [4,5,6] #字典中的key值即为csv中列名 dataframe ...
- PHP批量写入数据、批量删除数据
批量插入可以参考$sql = "insert into data (id,ip,data) values ";for($i=0;$i<100;$i++){$sqls[]=& ...