发表于: 2018-09-10 15:31:33

1 467


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 


安装memcached服务步骤:


1. 下载地址:http://pan.baidu.com/s/1gdKbp8R(这是在网上找的下载地址,可以下载)

2. 解压下载后的文件,把它放到一个目录中,如D:\memcached。

3. 打开cmd,进入memcached解压后存放的目录,运行命令:

   memcached.exe -d install

如果没有意外的话已经安装成功了。(目录中应该有memcached.exe这个文件)

4. 测试是否安装成功:

打开cmd,进入memcached解压后存放的目录,运行命令:

memcached -h,若安装成功,会出现如下界面:

  

5. 启动memcached:

打开cmd,进入memcached解压后存放的目录,运行命令:

memcached.exe -d start

这时memcached已经启动,在任务管理器中可以看到这个进程:

 

6. 连接Memcached:

打开cmd,运行命令:

telnet 127.0.0.1 11211

即可连接Memcached。


注意:win7中可能会出现“telnet’不是内部或外部命令”的错误,这是因为系统中默认没有安装telnet的缘故,可在“控制面板”->“程序”->“程序和功能”->“打开或关闭Windows功能”中打开“Telnet客户端”。



redis简介:

Redis是一个开源的key-value存储系统。与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型包括:字符串、哈希表、链表、集合、有序集合以及基于这些数据类型的相关操作。


Redis的常用数据类型:

与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多。最为常用的数据类型主要由五种:String、Hash、List、Set和Sorted Set。Redis内部内存管理中是如何描述这些不同数据类型的,可以看下图:


简单来说,Redis内部使用一个redisObject对象来表示所有的key和value。可以当做是一个数据表,字段有type,

encoding,ptr,vm等等,然后这个核心对象用来存储相关数据;


1)String

常用命令:set/get/decr/incr/mget等;

应用场景:String是最常用的一种数据类型,普通的key/value存储都可以归为此类;

实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr、decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。存为int类型的一般是“23”“12”这种数据式的字符串类型。


2)Hash

常用命令:hget/hset/hgetall等

应用场景:我们要存储一个用户信息对象数据,其中包括用户ID、用户姓名、年龄和生日,通过用户ID我们希望获取该用户的姓名或者年龄或者生日;

实现方式:Redis的Hash实际是内部存储的Value为一个HashMap,并提供了直接存取这个Map成员的接口。如图所示,Key是用户ID, value是一个Map。这个Map的key是成员的属性名(name,age,birthday等map内部的字段),value是属性值。这样对数据的修改和存取都可以直接通过其内部Map的Key(Redis里称内部Map的key为field), 也就是通过 key(用户ID) + field(属性标签) 就可以操作对应属性数据。当前HashMap的实现有两种方式:当HashMap的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,这时对应的value的redisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。



3)List

常用命令:lpush/rpush/lpop/rpop/lrange等;

应用场景:Redis list的应用场景非常多,也是Redis最重要的数据结构之一,比如twitter的关注列表,粉丝列表等都可以用Redis的list结构来实现;

实现方式:Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。

4)Set

常用命令:sadd/spop/smembers/sunion等;

应用场景:Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的;

实现方式:set 的内部实现是一个 value永远为null的HashMap,实际就是通过计算hash的方式来快速排重的,这也是set能提供判断一个成员是否在集合内的原因。

5)Sorted Set

常用命令:zadd/zrange/zrem/zcard等;

应用场景:Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。

实现方式:Redis sorted set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,而跳跃表里存放的是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。


Redis的持久化

Redis虽然是基于内存的存储系统,但是它本身是支持内存数据的持久化的,而且提供两种主要的持久化策略:RDB快照和AOF日志。RDB快照方式存储数据就是设定一个规则,在规则生效的时候生成快照文件,比如设定10分钟1000条数据的时候进行快照,短处就是在有故障的时候,从上一次快照到故障触发点这段时间的数据没有得到保存;AOF日志方式就是将导致数据发生修改的命令追加到AOF文件中,存储的是纯文本格式。



redis下载安装

下载的windows版本的,现在官网以及没有下载地址,只能在github上下载,官网只提供linux版本的下载

github下载地址:https://github.com/MSOpenTech/redis/tags 


下载解压,通过命令安装即可;


启动命令redis-server redis.windows.conf,出现下图显示表示启动成功了。 


设置服务命令

redis-server --service-install redis.windows-service.conf --loglevel verbose 

启动电脑服务之后如下图所示:


redis可视化工具下载安装


github地址:https://github.com/uglide/RedisDesktopManager/releases  

windows系统一定要选择exe后缀的文件下载,不然都找不到地方启动这个软件,目前只有0.9.3及以下的版本支持这种文件的安装,真的伤. 后面下载安装即可.

这是打开软件的界面

连接redis服务器



这几个功能键依次是 过滤key,重新加载key,添加key,启用实时更新,删除key


可以针对目标key执行rename,delete,addrow,reload value操作,应该就是和navicat差不多,对redis这个非关系型数据库的数据可以进行一些常规性的修改.



新建的连接栏,可以查看服务器信息,打开consol控制台等



memcache和redis的总体区别:

1)性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。

2)内存使用效率对比:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。

3)Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。


区别:1.Redis使用最佳方式是全部数据in-memory。

  2.Redis更多场景是作为Memcached的替代者来使用。

  3.当需要除key/value之外的更多数据类型支持时,使用Redis更合适。

  4.当存储的数据不能被剔除时,使用Redis更合适。



明天计划的事情:(一定要写非常细致的内容) 

如何应用memcache和redis
遇到的问题:(遇到什么困难,怎么解决的) 
收获:(通过今天的学习,学到了什么知识)

以上


返回列表 返回列表
评论

    分享到