当前位置:必发365电子游戏 > Web前端 > 内存数据库,若系统没有gcc环境会编译失败
内存数据库,若系统没有gcc环境会编译失败
2019-12-19

设置与应用

切实接收:

redis介绍:

布局文件

redis.windows.conf

Redis服务端的运维参数全体靠配置文件贯彻,此处详细介绍Redis配置文件的多少个关键参数:

network

general

snapshotting

append only mode

limits

Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,如字符串(String),哈希(Hash),列表(List),集合(Set),具有范围查询的排序集(ZSet)。Redis具有主从复制,缓存清理机制,部分事务和不同级别的磁盘持久化,并通过Redis Sentinel提供高可用性(哨兵模式),并通过Redis Cluster支持集群部署。

劳务命令

ping:启动服务连接情况
info:查看server/client配置信息
info commandstats + config resetstat:显示/清除名次调用统计信息
config get/set:获取/设置配信息
flushdb/flushall:删除当前所选/所有数据库中的所有key
save/bgsave:数据保存到硬盘/异步保存
lastsave: 上次成功保存到磁盘的unix时间戳
dbsize:查看所有key的数目 
get/set和mget/mset:获取/设置键
incr/decr和incrby/decrby:自增/自减
exists/type key:键key是否存在/键类型
expire key secondTime:设置键的过期时间
rename oldKey newKey:重命名
ttl key:键key的剩余存活时间
select db_index:选择数据库
move key db_index:将键key移动到指定数据库

安装Redis 4.0.6:

基本概念

Redis是杰出的NoSQL数据库服务器,其License是Apache License、完全无需付费。首先看下内部存款和储蓄器数据库的基本概念:

内部存储器数据库

In-Memory DataBase,以内部存储器为根本存款和储蓄介质媒质的数量库.

Redis

REmote DIctionary Server(远程字典服务),远程内部存款和储蓄器数据库(Memory Database + Data Structure Server),开源的接受ANSI-C语言编写、帮忙互联网、可依靠内部存款和储蓄器亦可持久化的日志型、高品质的key-value数据库,Redis不预定义且不应用表,适应高并发、海量数据存款和储蓄场景。

  • A persistent key-value database with built-in net interface written in ANSI-C for Posix systems.
  • Redis is an open source, BSD licensed, advanced key-value cache and store.

下边是Redis扶助的5种等级次序数据布局的中间图解(图意气风发):

必发365电子游戏 1

redisObject指标是Redis内部的主导指标,用于表示具备的key和value。

typedef struct redisObject {
    unsigned type:4;  // 数据类型
    unsigned encoding:4;  // 编码方式
    unsigned lru:REDIS_LRU_BITS;   /* lru time (relative to server.lruclock) */
    int refcount;   // 对象的引用计数
    void *ptr;   // 指向真正的存储结构
} robj;

其中,REDIS_LRU_BITS表示当内部存款和储蓄器超过限度时行使LRU算法消弭内部存款和储蓄器中的目的。redisObject对象的开创在object.c文件中:

robj *createObject(int type, void *ptr) {
    robj *o = zmalloc(sizeof(*o));
    o->type = type;
    o->encoding = OBJ_ENCODING_RAW;
    o->ptr = ptr;
    o->refcount = 1;

    /* Set the LRU to the current lruclock (minutes resolution). */
    o->lru = LRU_CLOCK();
    return o;
}    

Redis的键类型为string,值类型帮助:

切实内部存储器构造暗暗提示图(图二):

必发365电子游戏 2

参考:Redis数据库入门教程; Redis学习笔记;

特点

内存优化

  必发365电子游戏 3

  此中,字段free用于冗余空间,空间换时间、一定意况下幸免插入操作引起的扩大体量操作。

Redis .vs. Memcached

Redis 4.0.6

数据类型

string

必发365电子游戏 4

list

双向链表、允许再一次,扶植lpush/rpush和lpop/rpop;达成新闻队列等;

必发365电子游戏 5

set

分裂意再一次,内部是哈希表完毕、查找/删除/插入均O(1卡塔尔(英语:State of Qatar); 集结提供SINTE奥德赛、SUNION、SDIFF分别支持交集、并集、差集操作。

必发365电子游戏 6

hash

键值对(父键+子键:值)。存储键key的多少个属性数据,完全能够用Json格式存款和储蓄、直接当做string类型操作,但对性能有影响,所以Redis建议Hash类型。

必发365电子游戏 7 

如下,图一是平凡的key/value结构,须要封装叁个目的保存value的新闻;图二是Redis的Hash类型:

必发365电子游戏 8

zset

以不改变应万变键值对(父键+成员:分值),键值对实乃成员和分值(Member-Score)的映照关系(字符串成员member与浮点数分值score之间的平稳映射,按分值大小排序),分值必需为浮点数; 不仅可以够依据成员访谈成分(同散列),又足以依据分值按序访问成布满局。

必发365电子游戏 9

系统境遇:

持久化

内部存款和储蓄器提供主存款和储蓄扶助、硬盘作持久性存款和储蓄。暗中认可开启TiggoDB形式,暗许优先加载AOF文件。一回性将数据加载到内部存款和储蓄器中,二次性预热。

问题:当服务器被关闭时,服务器内部存款和储蓄器存款和储蓄的数据将往哪个地方去跟哪个人?

RDB .vs. AOF

必发365电子游戏,不重启Redis从奥迪Q5DB情势切换成AOF情势

redis-cli> config set appendonly yes:启用AOF
redis-cli> config set save "":关闭RDB

参考:Redis数据持久化; Redis小编:深度分析Redis长久化;

[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-220.el6.i686 #1 SMP Tue Dec 6 16:15:40 GMT 2011 i686 i686 i386 GNU/Linux

RDB

半长久化格局(快速照相方式:File-Snap-Shotting,即时间点转储:Point-in-提姆e Dump),Redis DataBase,将数据先存款和储蓄在内部存款和储蓄器,当直接调用save/bgsave命令时或数量修正满意设置的save条件时触发bgsave操作,将内部存款和储蓄器数据贰遍性写入昂科拉DB文件。相比相符灾荒恢复生机(Disaster Recovery),若Redis非凡crash,近年来的数量会遗弃。

rdbcompression yes:创建快照时对数据进行压缩  
dbfilename dump.rdb:快照名称
dir ./saveFile/:快照保存路径(AOF文件存放目录)

原理Copy-on-Write(写时复制)技术

该原理保障别的时候复制TiggoDB文件都以相对安全的。

小心:因为Redis是C语言编写,所以要求gcc景况。

AOF

全长久化格局(日志情势),Append-Only-File,将数据存在内部存款和储蓄器,同时调用fsync将这次写操作命令进行日志记录到aof文件,基于Redis互联网人机联作合同的由Redis规范命令组成的可识别的纯文本文件,只同意扩充裕化意改写。

写策略:暗中认可并推举 appendfsync everysec ,速度和安全统筹。

AOF最入眼的配置正是有关调用fsync追加日志文件长久化数据的效用。磁盘空间满、断电等情状不会影响日志的完整性和可用性。

保存:支持2种方式

加载

fakeClient = createFakeClient();   // 创建伪客户端
while(命令不为空) {
   // 获取一条命令的参数信息 argc, argv
      . . . 
   // 执行
   fakeClient->argc = argc;
   fakeClient->argv = argv;
   cmd->proc(fakeClient);
}

AOF重写

bgrewriteAOF,重新生成豆蔻梢头份AOF文件,新的AOF文件只含有对同一个值的频仍操作的尾声一条记下(能够复苏数据的纤维指令集),进度和普拉多DB相似(Copy-on-Write机制):

当同临时间满足以下2个规格时触发rewrite操作:

auto-aof-rewrite-percentage 100  // 当前写入日志文件的大小占到初始日志文件大小的某个百分比时触发rewrite
auto-aof-rewrite-min-size 64mb   // 本次Rewrite最小的写入数据量

在乎,bgrewriteaof和bgsave无法并且实践,幸免多个Redis后台进程同期对磁盘进行大气的I/O操作。

修复

Redis提供 redis-check-aof.exe 工具帮衬日志修复效果:

[root@localhost ~]# gcc -v
使用内建 specs。
目标:i686-redhat-linux
配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch=i686 --build=i686-redhat-linux
线程模型:posix
gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)

骨干机制

master-slave,为了升高悠久化学工业机械制,在悠久化根基上Redis提供复制功能:将叁个主服务器(master)数据自动同步到多少个从服务器(slave),完成主旨同步:

具体地:

在基本同步进度中(异步达成),从服务器不会卡住,时期暗中同意使用同步在此以前的数量继续响应客户端命令。主从机制支持增量同步计策,裁减连接断开的苏醒资本。

现实应用中何奇之有是:Redis+MySQL

必发365电子游戏 10

安装:

透露订阅机制

publish-subscribe,观看者方式,订阅者(Subscriber)订阅频道(Channel),发布者(Publisher)将音讯发到钦定频道(Channel),通过这种办法将音讯的发送者和接受者解耦,能够达成两个浏览器之间的音讯同步和实时更新。

必发365电子游戏 11

Redis的Pub/Sub情势允许动态的Subscribe/Unsubscribe,进步系统的八面驶风和可扩大性。  

必发365电子游戏 12

其他

排序

问题:数据库援救排序,为何要把排序作用放在缓存中落到实处?

事务

Transaction。

管道

pipilining,允许Redis叁回性选取几个指令、实施后一回性重临结果,收缩客商端与Redis服务器的通信次数、收缩往返时延。相仿事情,通过原子操作multi/exec实现。

事前级队列

blpop/brpop。

解压缩:

应用项景

第意气风发,将Redis与SQL Server/MySQL等比较一下:

运用途景

 - 在主页中显示最新的项目列表;
 - 删除和过滤:lrem;
 - 排行榜(Leader Board)及相关问题;
 - 按照用户投票和时间排序;
 - 过期项目处理:unix时间作为得分;
 - 计数(Counting Stuff):INCR,DECR命令构建计数器系统;
 - 特定时间内的特定项目:Redis特色特性;
 - 实时分析正在发生的情况,用于数据统计与防止垃圾邮件等;
 - Pub/Sub:发布订阅机制;
 - 队列(Priority Queue);
 - 缓存(Caching);  

接下来提交使用Redis中的几点注意事项:

以致因而翻阅 ALCA in Redis-land 获得的建议:

必发365电子游戏 13

参考:Redis应用处景; Redis小编谈Redis应用途景; Redis应用建议;

[root@localhost modules]# tar -zxvf redis-4.0.6.tar.gz -C ../softwares

Redis for C#

初识Redis时接触到的.Net-Redis组件是ServiceStack.Redis,其V3连串的时尚版本是:ServiceStack.Redis.3.9.29.0。

ServiceStack.Redis

ServiceStack.Common.dll
ServiceStack.Interfaces.dll
ServiceStack.Redis.dll
ServiceStack.Text.dll

刺探RedisClient类的实际消息:

当中,方法 public IRedisTypedClient<T> As<T>(卡塔尔国; 搭配接口 public interface 内存数据库,若系统没有gcc环境会编译失败。IRedisTypedClient<T> : IEntityStore<T>{} 和 public interface IEntityStore<T>{} 中提供的艺术能够成功各类操作。

在V3.0版本的功底上,其V4.0版本 ServiceStack.Redis-4.0.52 提供了越来越多的方式:

其中,Custom(卡塔尔国方法能够试行绝大许多的Redis命令,ServiceStack.Redis.Commands概念命令,用于Custom(卡塔尔方法的首先个参数:

public static class Commands{   
        public static readonly byte[] CommandName;
}   

参考

StackExchange.Redis

是因为ServiceStack.Redis的V4.0版本商业化最早收取金钱,推荐应用:StackExchange.Redis。

StackExchange.Redis是专为.Net/C#的Redis用户端API,近期被StackOverFlow使用、微软官方RedisSessionStateProvider也应用StackExchange.Redis达成。

StackExchange.Redis的为主是ConnectionMultiplexer类(线程安全),在命名空间StackExchange.Redis中定义,封装了Redis服务的操作细节,该类的实例被全体应用程序域分享和起用。

ConnectionMultiplexer redisClient = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redisClient .GetDatabase();

其底子和使用待学习...

参考

 


参考

必发365电子游戏 14

跻身此目录编写翻译redis:

 必发365电子游戏 15

[root@localhost redis-4.0.6]# make && make install

留意:若系统未有gcc碰到会编写翻译战败。安装gcc境况此处不赘述,请点击。

必发365电子游戏 16

编写翻译失利二遍后,安装gcc情况之后,重新编写翻译还或然会编写翻译败北,是因为上次编写翻译战败后又余留文件。

必发365电子游戏 17

那时实践:

[root@localhost redis-4.0.6]# make distclean

再度实践编写翻译就不会报错。