构建高性能数据库缓存之Redis(一)
来源:互联网 发布:凯立德端口波特率修改 编辑:程序博客网 时间:2024/05/16 09:53
一、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
#!/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的有效时间;
FROM:http://cfwlxf.blog.51cto.com/3966339/1423106
- 构建高性能数据库缓存之Redis(一)
- 构建高性能数据库缓存之redis主从复制
- 构建高性能数据库缓存之redis主从复制
- 构建高性能数据库缓存之redis主从复制
- 构建高性能数据库缓存之redis主从复制
- 建高性能数据库缓存之redis主从复制
- 如何构建高性能web站点之:分布式缓存
- 构建高性能服务(一)
- 高性能网站架构之缓存篇--Redis安装配置
- 高性能web 架构之redis 缓存集群
- 高性能网站架构之缓存篇--Redis安装配置
- MySQL 数据库性能优化之(一)缓存参数优化
- 高性能网站架构设计之缓存篇(5)- Redis 集群(上)
- 高性能网站架构设计之缓存篇(6)- Redis 集群(中)
- 高性能网站架构设计之缓存篇(4)- Redis 集群(上)
- 高性能网站架构设计之缓存篇(5)- Redis 集群(中)
- 高性能网站架构设计之缓存篇(4)- Redis 主从复制
- 高性能网站架构设计之缓存篇(1)- Redis的安装与使用
- leetcode Range Sum Query-Mutable
- PTN设备和SDH设备有什么区别?可以互通吗?
- 关于计算机中数字存储方式-原码、反码、补码
- [LeetCode]283. Move Zeroes&26. Remove Duplicates from Sorted Array
- 真机测试出现中文乱码
- 构建高性能数据库缓存之Redis(一)
- 全选反选
- ROS Learning-009 beginner_Tutorials ROS服务 和 ROS参数
- C++中的预编译
- Codeforces Round #334 (Div. 2) B. More Cowbell (贪心)
- Android -- 固定在ScrollView顶部的View,类似于新浪微博的评论列表的顶部
- Java I/O流 简单实现
- 练习2-6 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
- C#中汉语转拼音