一、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/sbin
export PATH
  
#operation redisdatabase
printf"\033[32mPlease Input One \'Key\' and \'Value\':\033[0m " key value
read key value
  
#create key 
redis-cli SET $key$value
printf"\n"
  
#To obtain key
redis-cli GET $key
printf"\n"
  
#Judge key to datatype
redis-cli TYPE$key
printf"\n"
  
#Delete key
printf"\033[33mYour Miss Delete The key? \(y|n\):\033[0m  "
read str
while [[ $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 ifexists
redis-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(一)的更多相关文章

  1. 构建高性能数据库缓存之redis(二)

    一.概述 在构建高性能数据库缓存之redis(一)这篇文档中,阐述了Redis数据库(key/value)的特点.功能以及简单的配置过程,相信阅读过这篇文档的朋友,对Redis数据库会有一点的了解,此 ...

  2. 构建高性能数据库缓存之redis主从复制

    一.什么是redis主从复制? 主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致:且实现Redis的主从复制 ...

  3. 数据库缓存mybatis,redis

    简介 处理并发问题的重点不在于你的设计是怎样的,而在于你要评估你的并发,并在并发范围内处理.你预估你的并发是多少,然后测试r+m是否支持.缓存的目的是为了应对普通对象数据库的读写限制,依托与nosql ...

  4. 高性能文件缓存key-value存储—Redis

    1.高性能文件缓存key-value存储-Memcached 2.ASP.NET HttpRuntime.Cache缓存类使用总结 备注:三篇博文结合阅读,简单理解并且使用,如果想深入学习,请多参考文 ...

  5. 利用Azure Redis Cache构建百万量级缓存读写

    Redis是一个非常流行的基于内存的,低延迟,高吞吐量的key/value数据存储,被广泛用于数据库缓存,session的管理,热数据高速访问,甚至作为数据库方式提高应用程序可扩展性,吞吐量,和实施处 ...

  6. Redis:高性能文件缓存key-value储存

    1.前言 a.Redis是一个开源,先进的key-value(键/值对)存储,并且勇于构建高性能,可扩展的Web应用程序的完美解决方案 b.Redis和Memcached的对比 b.1 Redis数据 ...

  7. (转)高性能网站架构之缓存篇—Redis集群搭建

    看过 高性能网站架构之缓存篇--Redis安装配置和高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的,相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的 ...

  8. 用Redis作Mysql数据库缓存

    使用redis作mysql数据库缓存时,需要考虑两个问题: 1.确定用何种数据结构存储来自Mysql的数据; 2.在确定数据结构之后,用什么标识作为该数据结构的键. 直观上看,Mysql中的数据都是按 ...

  9. redis(二)--用Redis作MySQL数据库缓存

    用Redis作MySQL数据库缓存,必须解决2个问题.首先,应该确定用何种数据结构存储来自mysql的数据:在确定数据结构之后,还要考虑用什么标识作为该数据结构的键. 直观上看,Mysql中的数据都是 ...

随机推荐

  1. python3 验证码图片切割

    切割前图片 切割后四个图片 代码 #coding:utf8 import os from PIL import Image,ImageDraw,ImageFile import numpy impor ...

  2. 大数据开发实战:Hive优化实战2-大表join小表优化

    4.大表join小表优化 和join相关的优化主要分为mapjoin可以解决的优化(即大表join小表)和mapjoin无法解决的优化(即大表join大表),前者相对容易解决,后者较难,比较麻烦. 首 ...

  3. 让你的ASP.NET虚拟主机也支持子网站

    现在asp.net虚拟主机一般都可以绑定多个域名,但是通过这几个域名打开的页面都一样.如何使绑的这几个域名分别打开不通的页面(即实现子网站的功能)呢? 其实很简单,只需4个步骤:    1)给虚拟主机 ...

  4. ZH奶酪:PHP (爬虫)下载图片

    原文地址:http://www.phpfensi.com/php/20140107/1128.html 通过图片地地址把图片保存到本址,这里我们直接通过readfile读取然后通过fopen保存即可, ...

  5. 【原】【BG】-一次虚拟化环境实践简要记录

    部分涉及到Linux.Nginx.tomcat.MySQL等的点滴操作记录,时间长了,就忘掉了,偶尔整理一下操作的history,就此简要备份一下: [原][BG]-一次虚拟化环境实践简要记录: ht ...

  6. Linux清理Buffer/Cache内存空间让系统变流畅

    释放缓存区内存的方法    a)清理pagecache(页面缓存) # echo 1 > /proc/sys/vm/drop_caches     或者 # sysctl -w vm.drop_ ...

  7. stingray后端开发

    stingray可是化后端开发架构 任何web应用的后端职能都是一样的:业务数据的增删改查.后端语言多种多样,但是唯一不变的就是SQL,你用Java也好,PHP,Python也好,最终操作数据库都是一 ...

  8. Stingray验证机制

    Filter 系统中的验证使用的是Filter库来完成,利用Filter配置几个属性和参数就实现了表单验证,简化了工作.基本原理很简单,在onload之后按照属性查找元素,然后绑定相应的change/ ...

  9. 使用hadoop eclipse plugin提交Job并添加多个第三方jar

    来自:http://heipark.iteye.com/blog/1171923 通过 "conf.set("tmpjars", jars);" 可以设置第三方 ...

  10. 算法笔记_222:串中取3个不重复字母(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 从标准输入读入一个由字母构成的串(不大于30个字符). 从该串中取出3个不重复的字符,求所有的取法. 取出的字符,要求按字母升序排列成一个串. 不同 ...