Redis:

  • redis集群查询
  • redis批量删除
  • redis数据备份和恢复
  • redis安全
  • redis性能测试
  • Redis 客户端连接

  • redis管道技术
  • redis分区
  • java操作redis

redis集群查询

>cluster info

>cluster nodes

>info replication

redis批量删除

redis的del因为不支持模糊删除,因此一般只能一个一个删除

批量删除使用Linux中的管道和xargs参数:

>redis-cli -h 192.168.68.187 -p 6379 -n 0 keys "myTest*" | xargs redis-cli -h 192.168.68.187 -p 6379 -n 0 del    //如果是本地则无需-h -p,-n表示分区,默认为0可以不写

因keys命令会造成redis线程阻塞,在大批量数据时,性能会下降,因此使用scan较好

>redis-cli scan 0 MATCH "mytest" COUNT 100 | xargs redis-cli  del

Redis 数据备份与恢复

数据库备份

采用save命令,创建当前数据库的备份,执行后会生成一个dump.rdb文件。这个文件就是数据库的备份文件。

>save

或者使用

>bgsave      //后台静默保存

保存文件地址查看:

>config get dir

数据库恢复

将保存的dump.rdb文件拷贝到目标Redis的文件路径下,重启Redis即恢复数据。

Redis 安全

redis中设置config的requirepass密码即可。

127.0.0.1:6380> config get requirepass
1) "requirepass"
2) "dennyzhao"
127.0.0.1:6380> config set requirepass denny
OK
127.0.0.1:6380>

Redis 性能测试

redis通过内部测试工具redis-benchmark来检测Redis的性能。

C:\Users\zhaoq>redis-benchmark -h 127.0.0.1 -p 6380 -a denny -n 10000 -q
PING_INLINE: 76923.08 requests per second
PING_BULK: 73529.41 requests per second
SET: 62893.08 requests per second
GET: 57803.47 requests per second
INCR: 75757.58 requests per second
LPUSH: 63694.27 requests per second
RPUSH: 54054.05 requests per second
LPOP: 45454.55 requests per second
RPOP: 38610.04 requests per second
SADD: 76923.08 requests per second
SPOP: 66225.17 requests per second
LPUSH (needed to benchmark LRANGE): 52910.05 requests per second
LRANGE_100 (first 100 elements): 25974.03 requests per second
LRANGE_300 (first 300 elements): 12903.23 requests per second
LRANGE_500 (first 450 elements): 9852.22 requests per second
LRANGE_600 (first 600 elements): 8058.02 requests per second
MSET (10 keys): 60240.96 requests per second

其中 -n 10000 -q 表示模拟1万笔数据发起请求进行测试。

具体参数说明详见http://www.runoob.com/redis/redis-benchmarks.html

Redis 客户端连接

redis服务端通过监听tcp端口来接收客户端的连接,监听后会将客户端的socket设置为非阻塞状态,方便随时进行数据通信。

同时建立一份可读文件来监听客户端的数据传送情况。

最大客户端连接数:

C:\Users\zhaoq>redis-cli -h 127.0.0.1 -p 6380 -a denny
127.0.0.1:6380> config get maxclient
(empty list or set)
127.0.0.1:6380> config get m*
1) "masterauth"
2) ""
3) "maxmemory"
4) "0"
5) "maxmemory-samples"
6) "5"
7) "maxclients"
8) "10000"
9) "min-slaves-to-write"
10) "0"
11) "min-slaves-max-lag"
12) "10"
13) "maxmemory-policy"
14) "noeviction"
127.0.0.1:6380> config get maxclients
1) "maxclients"
2) "10000"
127.0.0.1:6380>

客户端相关命令:

设定客户端名称方便查找

127.0.0.1:6380> client getname
(nil)
127.0.0.1:6380> client setname myTest1
OK
127.0.0.1:6380> client getname
"myTest1"
127.0.0.1:6380> client list
id=853 addr=127.0.0.1:59978 fd=33 name=myTest1 age=203 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=18446744073709537584 events=r cmd=client
127.0.0.1:6380> client pause
(error) ERR Syntax error, try CLIENT (LIST | KILL | GETNAME | SETNAME | PAUSE | REPLY)
127.0.0.1:6380>

Redis 管道技术

redis采用tcp协议,即无状态保存协议,客户端发起请求,监听socket返回,一次访问回应结束。在socket未返回回应之前,通道属于阻塞状态,这样大大影响了大数据并发写入。

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

有点像事务处理,但事务处理将所有命令放置在一起,然后统一去执行。

而管道技术是将每个命令去执行,先不管返回,最后统一回收。

127.0.0.1:6380> multi
OK
127.0.0.1:6380> set id 5526
QUEUED
127.0.0.1:6380> incr id
QUEUED
127.0.0.1:6380> incr id
QUEUED
127.0.0.1:6380> incr id
QUEUED
127.0.0.1:6380> incr id
QUEUED
127.0.0.1:6380> exec
1) OK
2) (integer) 5527
3) (integer) 5528
4) (integer) 5529
5) (integer) 5530
127.0.0.1:6380>

一般通过程序控制来实现。

/**
* 管道技术应用
*/
Pipeline pip = jedis.pipelined();
for(int i=0;i < 20;i++) {
//pip.set("name" + i, "张三" + i);
pip.get("name" + i);
}
//执行并读取
for(Object obj : pip.syncAndReturnAll()) {
System.out.println(obj.toString());
};

Redis 分区

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

Java操作Redis

java操作redis使用jedis.jar 作为驱动。如同ojdbc.jar对应oracle一样。

基础使用:

    private final static String R_HOST="127.0.0.1";
private final static String R_AUTO = "denny";
private final static int R_PORT = 6380; public static void main(String[] args) {
// 创建客户端连接
Jedis jedis = new Jedis(R_HOST, R_PORT);
jedis.auth(R_AUTO);
System.out.println(jedis.exists("username"));
jedis.set("username", "佟湘玉");
System.out.println(jedis.get("username"));
System.out.println(jedis.get("users"));
}

Redis入门高级部分的更多相关文章

  1. Redis入门指南

    随着互联网业务对性能需求日益强烈,作为Key/Value存储的Redis具有数据类型丰富和性能表现优异的特点.如果能够熟练地驾驭它,不管是把它用做缓存还是存储,对很多大型应用都很多帮助.新浪作为世界上 ...

  2. 【原】Redis入门教程

    最近在学习Redis,写几篇文章记录一下学习过程:Redis入门教程. 1.Redis基本概念 Redis Redis Keys Redis 基本数据类型 Redis基本操作 遍历操作 Pub-Sub ...

  3. Redis入门教程(二)

    推荐阅读: Redis入门教程(一)https://www.cnblogs.com/jichi/p/10285346.html 5. Redis 的数据结构 5.1 Redis 数据结构介绍 redi ...

  4. Redis入门指南之一(简介)

    1. 简介 Redis是一个开源的.高性能的.基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同的场景下的缓存与存储需求.同时Redis的诸多高级功能使其可以胜任消息队列.任务队列等不同的 ...

  5. Redis入门及主从配置

    1.Redis入门简介 Redis是一个开源的使用ANSI C语音编写.支持网络.可基于内存亦可持久化的日志型,Key-Value数据库.支持存储的value类型包括 string(字符串).list ...

  6. 超强、超详细Redis入门教程【转】

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  7. 超强、超详细Redis入门教程

    (1)什么是redis? Redis 是一个基于内存的高性能key-value数据库. (有空再补充,有理解错误或不足欢迎指正) (2)Reids的特点 Redis本质上是一个Key-Value类型的 ...

  8. 超详细Redis入门教程【转】

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下   [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使 ...

  9. Redis入门手册

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使用r ...

随机推荐

  1. C语言强化——指针

    目录 相关概念 数组与函数 栈空间和堆空间的差异 指针常量与常量指针 指针数组与数组指针 二级指针 二级指针的传递 二级指针的偏移(索引式排序) 相关概念 指针的大小,在32系统上是4个字节:在64位 ...

  2. [UE4]运行时脱离视角,进入自由视角

    按 Shift + F1让鼠标脱离游戏窗口,然后点击右上角的按钮,然后鼠标在游戏窗口点击一下,就只有自由漫游了. 还可以点击选中Word Outliner窗口的物体.

  3. [UE4]事件驱动的UI更新:事件调度器

    事件调度器就是一个“事件中介”,可以被调用和被关注.

  4. Java内存泄漏相关

    之前学习了javaGC的原理机制,有了一定的了解,现在做一个整理总结,便于理解记忆,包括三个问题: 1. java GC是什么时候做的? 2. java GC作用的东西是什么? 3. java GC具 ...

  5. ArcGIS for android访问天地图

    底图采用Web Mercator投影坐标系 获取元数据信息:http://t0.tianditu.com/img_w/wmts?SERVICE=WMTS&REQUEST=GetCapabili ...

  6. [UE4]C++中SpawnActor用法(动态创建Actor)

    转自:http://aigo.iteye.com/blog/2270177 C++中创建一个Level并添加的Runtime当中 C++中Spawn一个基于蓝图的Actor https://answe ...

  7. Linux下Mysql自启动

    如果你都是按照默认配置安装的那么只要按照如下步骤就可以了 1.cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql   将服 ...

  8. Error running app: Default Activity not found ; 安卓程序运行不了,也不报错。

    我最近copy一个工程,写完了去运行时不能运行,项目不报错,就是运行的地方有个叉号:尝试很多办法后准备重新New一个时发现:"10:17 Error running app: Default ...

  9. [Ahoi2013]差异(后缀自动机)

    /* 前面的那一坨是可以O1计算的 后面那个显然后缀数组单调栈比较好写??? 两个后缀的lcp长度相当于他们在后缀树上的lca的深度 那么我们就能够反向用后缀自动机构造出后缀树然后统计每个点作为lca ...

  10. JavaWeb学习总结(三)——Tomcat服务器学习和使用

    收藏 JavaWeb学习总结(三)——Tomcat服务器学习和使用 http://www.cnblogs.com/xdp-gacl/p/3744053.html