redis 第一篇
一、redis简介
redis是一个开源的高性能键值对数据库:本质上是数据结构服务器或者是数据结构数据库
特点:
1、共享内存
如果有自己的线程可以读list,如果外界还有一个程序都上面的list,那显然都不到的,但是redis是可以的
2、持久化
因为有上面的两个特点,解决了编程语言无法解决的问题,所以redis才会广受追捧
历史和发展
2008年,意大利的一家创业公司Merzia推出了基于MySql的网站实时统计系统LLOOGG,然而没过多久,该公司的创始人Salvatore Sanfilippo便开始对mysql的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,09年完成,这个数据库就是redis,并在同一年将redis开源发布,Salvatore Sanfilippo自己也没想到,短短的几年时间,redis就拥有了庞大的用户群体。Hacker News在12年发布一份数据库使用情况调查,结果显示有12%公司在使用redis,国内如新浪、知乎,国外如github、Stack Overflow都是redis的用户
特性:
a、存储结构上的特点 允许其他应用通过TCP协议读取字典中的内容
1、字符串类型
2、散列类型 (字典)
3、列表类型
4、集合类型
5、有序集合类型 复杂度(logN)
b、内存存储和持久化
redis数据库中的所有数据都 存储在内存中(unicode)由于内存的读写速度远快于硬盘,redis可以在一秒内读写超过十万个键值
redis将数据存储在内存中也有问题,如程序退出后内存中的数据会丢失,不过redis提供了持久化的功能,即将可以内存中的数据异步写入到硬盘中,同时不影响继续提供服务
c、功能丰富(应用场景)
1、作为database
2、cache
3、queue(message broker)
4、redis可以做MQ,(如果数据太大,不建议)常见的MQ有Rabbitmq,ActiveMQ,RocketMQ
d、简单稳定
1、语法简单(get,set) (命令只有一百多个)
2、稳定,redis是使用c语言开发
redis和memcached
redis在性能上是单线程模型(很少用多线程),Memcached支持多线程,所以在多核服务器上后者的性能更高一些,但是redis在绝大部分场合下性能都不会成为瓶颈
作为缓存系统,redis还可以限定数据占用的最大内存空间,在数据达到空间限制后,可以按照一定的规则自动淘汰不需要的键
除此之外,redis的列表类型键还可以实现队列,并且支持阻塞式读取,可以很容易的实现一个高性能的优先级队列,在更高层面上,redis还支持“发布订阅”的消息模型
三、安装redis
Installation
Download, extract and compile Redis with:
$ wget http://download.redis.io/releases/redis-4.0.1.tar.gz
$ tar xzf redis-4.0.1.tar.gz
$ cd redis-4.0.1
$ make
出现上面就是安装成功
之后下面是redis简单的使用
The binaries that are now compiled are available in the src directory. Run Redis with:
$ src/redis-server
You can interact with Redis using the built-in client:
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
安装小结:
1、redis 默认采用6379的端口
2、
redis-server redis服务器
redis-cli redis的客户端
redis-sentinel 做双击热备
redis-benchmark 性能优化
redis-check-aof AOF文件修复工具
redis-check-dump RDB文件检查工具
小实例
[root@localhost redis-4.0.1]# src/redis-cli
127.0.0.1:6379> set name pyrene
OK
127.0.0.1:6379> get name
"pyrene"
本系列环境:
Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
redis-4.0.1
最新文章
- CALayer的m34 - 三维透视效果
- 个人CTF资源聚合
- C-全局变量与局部变量
- 将枚举定义生成SQL中的Case-When-then语句
- SQLServer获取临时表所有列名或是否存在指定列名的方法
- 【转载】springMVC表单校验+全注解
- Mod 与 RequireJS/SeaJS 的那些事
- Bug:java.lang.IllegalStateException
- bower——库管理工具
- angularJS的核心特性
- 相机标定 matlab opencv ROS三种方法标定步骤(1)
- 线程-join();
- 转:【Java并发编程】之二:线程中断(含代码)
- Pycharm小技巧--使用正则进行查找和批量替换
- Java基础之 反射是什么?
- java 11 实现RFC7539中指定的ChaCha20和Poly1305两种加密算法, 代替RC4
- C#中五种访问修饰符作用范围 public、private、protected、internal、protected internal
- spotlight工具监控oracle
- Vue 组件化
- vsphere使用笔记