构建高性能数据库缓存之Redis(一)

2023-11-15

一、Redis概述

1什么是redis

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


wKiom1ORgiOT6tamAAL9ocNaFLQ737.jpg


12 Redis支持语言与数据类型

Redis提供多种语言的API,包括:PerlPHPPythonRubyLuaCC++C#等;与Memcache相比,Redis中值(Value)的类型不仅限于字符串(strings),可以支持的类型还包括哈希表(hashes)、列表(lists)、集合(sets)和排序集(sorted sets)。而且值的类型决定了值本身支持的操作,Redis支持不同无序、有序的列表,无序、有序的集合间的交集、并集等高级服务器端原子操作。


1持久化

Redis通常将全部的数据存储在内存中。2.4版本后可配置为使用虚拟内存[6]一部分数据集存储在硬盘上,但这个特性废弃了。

目前通过两种方式实现持久化

使用快照,一种半持久耐用模式。不时的将数据集以异步方式从内存以RDB格式写入硬盘。

1.1版本开始使用更安全的AOF格式替代,一种只能追加的日志类型。将数据集修改操作记录起来。Redis能够在后台对只可追加的记录作修改来避免無限增长的日志。

 

14同步

Redis支持主从同步,数据可以从主服务器任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器,这使得Redis可以执行单层树复制。从盘可以有意无意的对数据进行写操作,使得从数据库在任何地方同步树时,可以订阅一个频道并接收主服务器完整的消息发布记录;同步对读取操作的可扩展性和数据冗余何有帮助。至今使用Redis的公司包括百度、新浪、搜狐、TencentDisqusDiscourse、暴雪娱乐、TweetDeckGitHUBTwitter等;

 

参考文献:

http://zh.wikipedia.org/zh/Redis

http://baike.baidu.com/view/4595959.htm?fr=aladdin

http://redis.cn/topics/introduction.html


二、安装Redis

2下载、编译与安装

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配置与运行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 &

 

22检测运行结果

#代码段

[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 


三、测试

31 Redis客户端连接模式

[root@redis_master~]# redis-cli set mykey 'hello world!'            #设置一个keyvalue

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数据库;

32 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附加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测试结果wKiom1ORg33hPV0OAAD5d5s5x68967.jpg


四、相关参数详解

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


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建高性能数据库缓存之Redis(一) 的相关文章

  • 【Nexus】安装配置与使用

    1 为什么使用Nexus 如果没有私服 我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地 而一个团队中的所有人都重复的从maven仓库下 载构件无疑加大了仓库的负载和浪费了外网带宽 如果网速慢的话 还会影响
  • Constructing Roads In JGShining's Kingdom

    点击打开链接 Problem Description JGShining s kingdom consists of 2n n is no more than 500 000 small cities which are located i
  • Python3+pyshark捕获数据包并保存为文件

    一 直接使用wireshark捕获数据包并保存为文件 可以使用wireshark通过图形界面的操作来实现捕获数据包并保存为文件 wireshark默认捕获的数据包保存为临时文件 如果最后退出时不选择保存那么临时文件将会被删除 可以在 菜单栏
  • 汉明距离(Hamming Distance)

    汉明距离 Hamming Distance 定义 汉明距离以美国数学家理查德 卫斯里 汉明的名字命名 表示两个相同长度的字符串在相同位置上不同字符的个数 用d x y 来表示x和y两个字符串的汉明距离 汉明距离可以用来计算两个文本之间的相似

随机推荐

  • diff和patch命令——Linux命令解析(一)

    个人学习记录使用 一 说明 patch命令和diff命令 往往是要搭配使用的 patch 利用提供的补丁文件 给源文件打补丁 diff 比较两个文件 生成需要修改的补丁文件 二 diff命令 生成补丁文件 1 命令格式 diff optio
  • Cygwin 、MSYS、MinGW 的区别与联系是怎样的?

    讲区别联系之前 我们先看一下这几个东东的前世今生 Cygwin 原 Cygnus 出品 已被红帽收购 目前是 RedHat 名下的项目 项目的目的是提供运行于 Windows 平台的类 Unix 环境 以 GNU 工具为代表 为了达到这个目
  • Java 中的Lock锁对象(ReentrantLock/ReentrantReadWriteLock)详解

    目录 1 Lock Objects 详解 2 Java 中的 Lock Objects 的实现原理 3 ReentrantLock 详解 4 ReentrantReadWriteLock 详解 5 Lock锁的等待和唤醒 6 Lock 和
  • 代码的执行原理

    代码的执行原理 一 代码段 什么是代码段 一个script标签就是一个代码段 JS代码在执行时 是一个代码段一个代码段执行 二 代码执行的步骤 JS代码在执行时分两个阶段 1 预编译 2 代码执行 每一个阶段做的事情是不一样的 先了解一下定
  • UE5 Rokoko Studio Live(动捕实时链接)

    UE5 Rokoko动作捕捉实时 一 新建初始化项目 添加插件 打开UE5 1 1 新建 第三人称游戏 文件夹筛选找到模板自带的关卡 新建动画蓝图 gt 然后选择到UE的小白人骨骼 因为我们需要Rokoko的实时动捕 需要在项目里添加Rok
  • IDEA常用快捷键

    IDEA常用快捷键 快捷键 描述 Ctrl Shift R 全局搜索 替换 Ctrl Shift F 全局搜索 Ctrl F 局部搜索 Shift双击 搜索类 接口等 Ctrl 鼠标点击类名称 进入类的内部 Ctrl Alt O 清除不使用
  • 气候数据处理代码实现

    案例 根据站点降雨量日数据求月总降雨量 年总降雨量 月降雨天数 年降雨天数等 数据 部分数据如下 统计结果
  • 怎么理解KMP算法中的next数组(为甚有时候加一有时候不加一?)

    KMP算法怎么来的和找规律 以及对于BF算法他的主要区别就不再赘述我们 我们来说一下怎么用最快的速度加上已知规律找到给定字符串的next数组 C语言中和java中都适用 我们已经找到了部分规律 next数组中的值可能和已匹配部分字符串的前缀
  • 关于RabbitMQ的面试题

    关于RabbitMQ的面试题 整理了一下面试中问到rabbitmq消息队列时 面试官可能会问到的问题 面试题1 为什么使用rabbitmq 什么时候用 怎么用 一开始写项目 架构比较单一 使用的是单体结构 把所有的业务都堆积在一个项目里 随
  • [1220]hue数据导出

    1 执行要下载的sql语句 2 执行完成后 点击下面导出 3 选择所有 4 选择每个人对应的文件夹 没有自己名称的可以创建一个 5 选择导出 6 右面是导出执行时的界面 7 选择已经执行的文件 8 按照下面截图提示 就可以将文件下载到本地了
  • iOS上架报错:无法添加以供审核

    无法提交以供审核 要开始审核流程 必须提供以下项目 您必须为要添加的 app 提供版权信息 您在提交 app 审核时遇到的问题是因为需要提供版权信息 而您的 app 缺少相关的版权信息 以下是解决此问题的步骤 确认您是否拥有 app 的版权
  • kettle 关于数据库事务操作的解释说明

    事务与数据库 1 数据库连接只在执行作业或转换时使用 在作业里 每一个作业项都打开和关闭一个独立的数据库连接 转换也是如此 但是因为转换里的步骤是并行执行的 每个步骤都打开一个独立的数据库连接并开始一个事务 尽管这样在很多情况下会提高性能
  • Airbnb深度学习在搜索领域的探索总结

    今天的博客主要参考了Airbnb发表的paper Applying Deep Learning To Airbnb Search 这篇paper介绍了近2年Airbnb在搜索场景下所使用模型的演进路线 以及一些失败的总结和经验的总结 最难能
  • 常用的渗透测试工具之 SQLMap

    web安全攻防 第三章学习之SQLmap SQLMap介绍 SQLMap是自动化的SQL注入工具 主要功能是扫描 发现并利用URL的SQL注入漏洞 内置了很多绕过插件 SQLMap采用了五种独特的SQL注入技术 如下 1 基于布尔类型的盲注
  • maven deploy 遇到 “方法不会覆盖或实现超类型的方法” 不要慌

    思考问题 这个bug看的我莫名其妙 看名字也看不懂说的啥 在网上看到说什么把 Override去掉就行了什么 我就觉得很奇怪 跟这个能有什么关系呢 网上既然说是跟 Override有关 那么这应该是是跟我实现的接口有关 后来发现是我在接口中
  • 【星海随笔】Windows 下 安装 Eclipse IDE 编辑 C++ Code

    首先下载Eclips https download csdn net download weixin 41997073 86727250 安装后 然后点点点就可以了 但要记住自己安装的路径 安装后 先认识一下这个工具 File可以创建项目
  • sublime vue 语法高亮插件安装

    转自 http www cnblogs com cosnyang p 6290950 html 默认情况下 Vue js 的单文件组件 vue 在 sublime 编辑器中是不被识别的 若要想高亮显示 需要安装插件 Vue Syntax H
  • No such operator image::read_file问题解决

    在学习动手学深度学习这门课的时候 在13 6 节 标检测数据集这一章遇到了问题 读取数据的时候报错 No such operator image read file 网上有人说问题在于pytorch版本和torchvision版本不对应 可
  • weixin-js-sdk使用

    注意 以下内容自身的项目为uniapp编译生成微信小程序 小程序内嵌webview 一 微信初始化 安装微信sdk npm install weixin js sdk save 页面引入 import wx from weixin js s
  • 构建高性能数据库缓存之Redis(一)

    一 Redis概述 1 1 什么是redis Redis是一个开源的用ANSI C编写 支持网络 基于内存 亦可持久化的日志型 Key Value数据库 根据DB Engines com站点月度排行的数据显示 Reidis是最流行的键值对存