文档章节

有趣的redis

刘大神
 刘大神
发布于 2016/07/25 15:23
字数 1180
阅读 15
收藏 0

一、redis简介

        redis遵循BSD协议,是一个高性能的key-value数据库,属于小巧玲珑型,与其他类似的缓存产品来比,有以下三个特点:

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

二、redis的优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

三、redis的基本类型

    redis的基本类型相对来说比较少,只有5种基本的类型:string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合);

1.string(字符串)类型

redis 127.0.0.1:6379> SET name "w3cschool.cc"
OK
redis 127.0.0.1:6379> GET name
"w3cschool.cc"

2.hash(哈希)类型

redis 127.0.0.1:6379> HMSET user:1 username w3cschool.cc password w3cschool.cc points 200
OK
redis 127.0.0.1:6379> HGETALL user:1
1) "username"
2) "w3cschool.cc"
3) "password"
4) "w3cschool.cc"
5) "points"
6) "200"
redis 127.0.0.1:6379>

3.list(列表)类型

redis 127.0.0.1:6379> lpush w3cschool.cc redis
(integer) 1
redis 127.0.0.1:6379> lpush w3cschool.cc mongodb
(integer) 2
redis 127.0.0.1:6379> lpush w3cschool.cc rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange w3cschool.cc 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>

4.set(集合)类型

redis 127.0.0.1:6379> sadd w3cschool.cc redis
(integer) 1
redis 127.0.0.1:6379> sadd w3cschool.cc mongodb
(integer) 1
redis 127.0.0.1:6379> sadd w3cschool.cc rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd w3cschool.cc rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers w3cschool.cc

1) "rabitmq"
2) "mongodb"
3) "redis"

5.zset(有序集合)类型

redis 127.0.0.1:6379> zadd w3cschool.cc 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd w3cschool.cc 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd w3cschool.cc 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd w3cschool.cc 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE w3cschool.cc 0 1000

1) "redis"
2) "mongodb"
3) "rabitmq"

http://doc.redisfans.com/   附上一个redis命令的一个文档

 

四、redis发布订阅

        redis有自己的订阅和发布功能,订阅发布其实是一个消息通信模式:发送者发送消息,订阅者接收消息。只要是有客户端订阅了频道channel的消息,那么当有消息发送给频道channel的时候,channel就会向订阅他的消息的客户端发送消息。(此过程类似于广播)

 

五、redis事务

    redis的事务处理机制,和其他主流数据库都是一样的,redis保证了数据操作的可靠性:

  • 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
  • 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

一个事务从开始到执行会经历以下三个阶段:

  • 开始事务。
  • 命令入队。
  • 执行事务。

 

 

以上都是比较基础的,如果对于主流数据库熟悉的话,那么上面的内容也很好理解,区别不同在于,redis有自己的实现方式,不像是主流数据库执行sql语句。下面介绍一些比较高级的东西:

六、redis 数据备份与恢复

    1.redis 通过使用命令Save 或者是Bgsave来执行备份操作,区别在于,后者是后台执行。备份成功之后,会在redis安装目录下面生成一个dump.rdb文件,此文件就是备份文件。

    2.恢复数据的时候,只要将备份文件放到redis安装目录并启动就可以了。获取redis安装目录的命令:CONFIG GET dir(注意大小写)

 

七、redis性能测试

    性能测试命令:redis-benchmark [option] [option value]

redis 性能测试工具可选参数如下所示:

序号 选项 描述
1 -h 指定服务器主机名,默认:127.0.0.1
2 -p 指定服务器端口,默认:6379
3 -s 指定服务器socket
4 -c 指定并发连接数
5 -n 指定请求数
6 -d 以字节的形式指定SET/GET值的数据大小
7 -k 1=keep  alive  0=reconnect
8 -r SET/GET/INCR 使用随机key,SADD使用随机值
9 -p 通过管道传输<numreq>请求
10 -q 强制退出redis。仅显示query/sec值
11 --csv 以csv格式输出
12 -l 生成循环,永久执行测试
13 -t 仅运行以逗号分隔的测试命令列表
14 -i idle模式。仅打开N个idle连接并等待

© 著作权归作者所有

刘大神
粉丝 8
博文 21
码字总数 18133
作品 0
朝阳
高级程序员
私信 提问
一个redis集群的框架设计

如下图所示: 整个结构玢如上图所示: zookeeper集群负责记录redis集群的部署信息,Monitor负责监控redis集群状态并将redis集群状态变化更新到zookeeper,client监控zookeeper redis状态信息...

大大美女女
2014/02/20
0
0
Redis 4.0.9 发布,修复关于 AOF 严重的 bug 和新增功能

Redis 4.0.9 已发布,发布说明显示,该版本新增了一些有趣的功能,也修复了重要的关于 AOF 的 bug。 关于修复 AOF 严重的 bug 的详细描述请查看更新说明。 其他更新 Bug 修复 Latency monito...

淡漠悠然
2018/03/30
1K
6
redis基本类型 redis的键

最好坚持一种模式。例如:”object-type:id:field”就是个不错的注意,像这样”user:1000:password”。我喜欢对多单词的字段名中加上一个点,就像这样:”comment:1234:reply.to”。 虽然字符...

xpttxsok
2016/05/16
18
0
Twemproxy,Twitter 发布的 Redis 代理服务

虽然大量用户使用了大型Redis节点集群,从项目本身到角度来看,Redis仍然是一个单实例业务。 关于项目的分布式化我有一个想法,可以不需要再评估Redis的任何多线程版本:我认为从Redis的角度...

jjj09090
2013/03/03
18.5K
11
恶意用假ID高并发get请求攻击导致无法命中缓存而数据库压力过大的防范?

今天面试被问到个有趣的问题,数据库有个表,主键为数字型自增。对外有个get请求例如/item/1,来访问其数据,事先已做过redis缓存,当ID命中缓存时读redis,否则读数据库。 现在问题来了,如...

无敌翔哥
2018/03/21
993
16

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周五乱弹 —— 要步入《攻壳机动队》的世界了么?

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @ nnnm:说到音乐,这段一直是纯音乐在循环。每次听到久石让的Summer时心上都会莫名的感觉着轻松。《菊次郞的夏天》竟然是北野武的片子,没有...

小小编辑
15分钟前
31
3
C++ STL set::find的用法

参考: http://blog.csdn.net/lihao21/article/details/6302196 /* class for function predicate * - operator() returns whether a person is less than another person */ c......

shzwork
25分钟前
0
0
抽象同步队列AQS——AbstractQueuedSynchronizer锁详解

AQS——锁的底层支持 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资...

须臾之余
今天
3
0
springboot配置百度UEditor 富文本详解

富文本简介 UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码... 准备工作 ueditor需要单独文...

wotrd
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部