构建高性能数据库缓存之Redis(一)
一、Redis概述
1、1 什么是redis
Redis是一个开源的用ANSI C编写、支持网络、基于内存、亦可持久化的日志型、Key-Value数据库,根据DB-Engines.com站点月度排行的数据显示,Reidis是最流行的键值对存储数据库,现在的开发由VMware主持。

1、2 Redis支持语言与数据类型
Redis提供多种语言的API,包括:Perl、PHP、Python、Ruby、Lua、C、C++、C#等;与Memcache相比,Redis中值(Value)的类型不仅限于字符串(strings),可以支持的类型还包括哈希表(hashes)、列表(lists)、集合(sets)和排序集(sorted sets)。而且值的类型决定了值本身支持的操作,Redis支持不同无序、有序的列表,无序、有序的集合间的交集、并集等高级服务器端原子操作。
1、3 持久化
Redis通常将全部的数据存储在内存中。2.4版本后可配置为使用虚拟内存,[6]一部分数据集存储在硬盘上,但这个特性废弃了。
目前通过两种方式实现持久化:
使用快照,一种半持久耐用模式。不时的将数据集以异步方式从内存以RDB格式写入硬盘。
1.1版本开始使用更安全的AOF格式替代,一种只能追加的日志类型。将数据集修改操作记录起来。Redis能够在后台对只可追加的记录作修改来避免無限增长的日志。
1、4同步
Redis支持主从同步,数据可以从主服务器任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器,这使得Redis可以执行单层树复制。从盘可以有意无意的对数据进行写操作,使得从数据库在任何地方同步树时,可以订阅一个频道并接收主服务器完整的消息发布记录;同步对读取操作的可扩展性和数据冗余何有帮助。至今使用Redis的公司包括百度、新浪、搜狐、Tencent、Disqus、Discourse、暴雪娱乐、TweetDeck、GitHUB、Twitter等;
参考文献:
http://zh.wikipedia.org/zh/Redis
http://baike.baidu.com/view/4595959.htm?fr=aladdin
http://redis.cn/topics/introduction.html
二、安装Redis
2、1 下载、编译与安装
Redis官网下载地址:http://download.redis.io/releases/redis-2.8.9.tar.gz
##代码段
[root@redis_mastersource]# cd /home/source/
[root@redis_mastersource]# wget http://download.redis.io/releases/redis-2.8.9.tar.gz
[root@redis_mastersource]# tar -xf redis-2.8.9.tar.gz
[root@redis_masterredis-2.8.9]# cd redis-2.8.9
[root@redis_masterredis-2.8.9]# make
[root@redis_masterredis-2.8.9]# make install
2、2 配置与运行Redis
#代码段
[root@redis_masterredis-2.8.9]# mkdir /etc/redis
[root@redis_masterredis-2.8.9]# cp redis.conf /etc/redis/
[root@redis_master~]# vim /etc/redis/redis.conf
##提示:指定存放redis日志的文件,默认发送至/dev/null文件中;
logfile"/var/log/redis/redis.log"
[root@redis_master~]# mkdir /var/log/redis/
[root@redis_master~]# redis-server /etc/redis/redis.conf &
2、2、1 检测运行结果
#代码段
[root@redis_master~]# netstat -lntp | grep redis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 40299/redis-server
tcp 0 0 :::6379 :::* LISTEN 40299/redis-server
三、测试
3、1 Redis客户端连接模式
[root@redis_master~]# redis-cli set mykey 'hello world!' #设置一个key的value
OK
[root@redis_master~]# redis-cli get mykey #获取key上的value
"helloworld!"
[root@redis_master~]# redis-cli type mykey #获取key的类型,显示结果为字符串(string)
String
[root@redis_master~]# redis-cli strlen mykey #获取key的长度,其中空格也占用一个字符;
(integer) 12
##提示:可以通过SHELL脚本操纵Redis数据库;
3、2 telnet 客户端连接模式
[root@redis_master~]# telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to127.0.0.1.
Escape characteris '^]'.
set test"welcome to bei jing"
+OK
get test
$19
welcome to beijing
strlen test
:19
quit
+OK
Connection closedby foreign host.
3、3 附加shell测试脚本
[root@redis_master~]# cat test_redis.sh
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#!/bin/sh#descrition: testredis database #author: cfwl,crate date of 2014-06-06 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbinexport PATH #operation redisdatabaseprintf"\033[32mPlease Input One \'Key\' and \'Value\':\033[0m " key valueread key value #create key redis-cli SET $key$valueprintf"\n" #To obtain keyredis-cli GET $keyprintf"\n" #Judge key to datatyperedis-cli TYPE$keyprintf"\n" #Delete keyprintf"\033[33mYour Miss Delete The key? \(y|n\):\033[0m "read strwhile [[ $str !="y" ]] do printf "\033[33mYour MissDelete The key? \(y|n\):\033[0m " read str [ $str = 'y' ] &&redis-cli DEL $key $value && printf "\n" done #Judge key ifexistsredis-cli EXISTS$key |
3、4 测试结果
四、相关参数详解
SET 创建一个key;
GET 获取一个key的值;
DEL ***一个key;
TYPE 获取一个key的类型;
EXISTS 判断一个key是否存在,0:存在,1,不存在;
KEYS 获取给定模糊匹配的key;
EXPIRE 设置一个key过期的秒数;
PERSTST ***一个key过期的秒数;
PEXPIRE 设置一个key过期的毫秒数;
RENAME 将一个key重命名;
RENAMENX 将一个key重命名,且新的key必须是不存在的可以;
TTL 获取key的有效时间;
本文出自 “一步一脚印,从运维到DBA” 博客,请务必保留此出处http://cfwlxf.blog.51cto.com/3966339/1423106
构建高性能数据库缓存之Redis(一)的更多相关文章
- 构建高性能数据库缓存之redis(二)
一.概述 在构建高性能数据库缓存之redis(一)这篇文档中,阐述了Redis数据库(key/value)的特点.功能以及简单的配置过程,相信阅读过这篇文档的朋友,对Redis数据库会有一点的了解,此 ...
- 构建高性能数据库缓存之redis主从复制
一.什么是redis主从复制? 主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致:且实现Redis的主从复制 ...
- 数据库缓存mybatis,redis
简介 处理并发问题的重点不在于你的设计是怎样的,而在于你要评估你的并发,并在并发范围内处理.你预估你的并发是多少,然后测试r+m是否支持.缓存的目的是为了应对普通对象数据库的读写限制,依托与nosql ...
- 高性能文件缓存key-value存储—Redis
1.高性能文件缓存key-value存储-Memcached 2.ASP.NET HttpRuntime.Cache缓存类使用总结 备注:三篇博文结合阅读,简单理解并且使用,如果想深入学习,请多参考文 ...
- 利用Azure Redis Cache构建百万量级缓存读写
Redis是一个非常流行的基于内存的,低延迟,高吞吐量的key/value数据存储,被广泛用于数据库缓存,session的管理,热数据高速访问,甚至作为数据库方式提高应用程序可扩展性,吞吐量,和实施处 ...
- Redis:高性能文件缓存key-value储存
1.前言 a.Redis是一个开源,先进的key-value(键/值对)存储,并且勇于构建高性能,可扩展的Web应用程序的完美解决方案 b.Redis和Memcached的对比 b.1 Redis数据 ...
- (转)高性能网站架构之缓存篇—Redis集群搭建
看过 高性能网站架构之缓存篇--Redis安装配置和高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的,相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的 ...
- 用Redis作Mysql数据库缓存
使用redis作mysql数据库缓存时,需要考虑两个问题: 1.确定用何种数据结构存储来自Mysql的数据; 2.在确定数据结构之后,用什么标识作为该数据结构的键. 直观上看,Mysql中的数据都是按 ...
- redis(二)--用Redis作MySQL数据库缓存
用Redis作MySQL数据库缓存,必须解决2个问题.首先,应该确定用何种数据结构存储来自mysql的数据:在确定数据结构之后,还要考虑用什么标识作为该数据结构的键. 直观上看,Mysql中的数据都是 ...
随机推荐
- VMware中创建Ubuntu16.0.4虚拟桥连方式无法上网
一.问题描述 在本地VMvare中已经安装了两台虚拟机,网络方式都是桥连,上网都可以自动获取IP地址 和HOST主机是一个号段的 ,同为192.168.1.X KingServer1(原始安装) 桥 ...
- sourceTree 基础使用
https://www.cnblogs.com/tian-xie/p/6264104.html
- 面试题04_替换空格_剑指Offer系列
题目描写叙述 请实现一个函数,将一个字符串中的空格替换成"%20". 比如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 解题思路 ...
- 单元测试Mockito中的Mock和Spy
转载:https://blog.csdn.net/qq_30141957/article/details/81273829 项目中,有些函数需要处理某个服务的返回结果,而在对函数单元测试的时候,又不能 ...
- 视图控制器生命周期中各个重要的方法(Swift) (Important Methods during the Lifecycle of a View Controller)
1. init(coder:) 它是视图控制器从故事板创建实例的默认初始化函数.(It is the initializer for UIViewController instances create ...
- 我的webrequest经验
1 webrequest 是什么:编程方式模拟web请求,利用webrequest可以实现 相当于一个浏览器请求一个网页的效果,但是它始终是模拟请求, 与浏览器输入框输入网址请求不一样. 2 程序设计 ...
- 查看一个目录是否已经mount --bind
执行 mountpoint -q /test/mount echo $? 如果是0表示已经mount mountpoint -q /test/mount || mount -o bind /some/ ...
- Zabbix通过Nginx状态来监控网站并发量
一.开 启Nginx状态 一.安装Nginx 执行命令:yum install nginx 二.启动Nginx 执行命令:systemctl start nginx 三.配置Nginx开启Status ...
- Nginx+Lua+Redis构建高并发应用
一. 源文来自:http://www.ttlsa.com/nginx/nginx-lua-redis/ 二. 预览如下:
- 如何设置Vmware下Linux系统全屏显示
环境:Vmware10+RedHat5 在Vmware10中安装好RedHat5后,即使点击了全屏按钮(或使用快捷键Ctrl+Alt+Enter),全屏的效果依然不尽人意,跟下图中差不多,RedHat ...