第一部分:入门概述
1.1 Redis是什么?
Redis:Remote Dictionary Server(远程字典服务器),是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化NoSQL数据库,是当前最热门的NoSQL数据库之一,也被人们称为数据结构服务器
Redis 与其他 key - value 缓存产品有以下三个特点,这也是它逐渐取代Memcache的原因。
1)Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
2)Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
3)Redis支持数据的备份,即master-slave模式的数据备份
1.2 Redis能干什么
1)内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
2)取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面
3)模拟类似于HttpSessioin这种需要设定过期时间的功能
4)发布订阅消息系统
5)定时器、计数器
1.3 去哪下
1.3.1 英文网站:http://redis.io/
1.3.2 中文网站:http://www.redis.cn/
1.4 怎么玩
1.4.1 数据类型、基本操作和配置
1.4.2 持久化和复制,RDB/AOF
1.4.3 事务的控制(Redis部分支持事务)
1.4.4 复制
........................
第二部分:Redis安装
2.1 下载Redis安装包,这里我用的是redis-3.0.4.tar.gz,大家可以去:http://download.csdn.net/detail/u012453843/9696273这个地址进行下载
2.2 将下载好的redis-3.0.4.tar.gz上传到我们的虚拟机上,虚拟机我用的是CentOS6.8,上传我用的工具是FileZilla,如下图所示。
2.3 解压
[root@itcast01 opt]# tar -zxvf redis-3.0.4.tar.gz
2.4 make安装
[root@itcast01 redis-3.0.4]# make
[root@itcast01 redis-3.0.4]# make install
安装过程中可能会碰到gcc命令未找到的问题,解决方法:yum install gcc-c++
安装完gcc之后再执行make操作的话,会报Jemalloc/jemalloc.h:没有那个文件或目录,这时我们可以运行make distclean之后再make
安装完之后,使用命令:gcc -v来检查是否安装成功
[root@itcast08 ~]# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../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_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
[root@itcast08 ~]#
刚安装完Redis我们可以不执行Redis Test,如果要执行的话,可能会报TCL不存在。
安装TCL的步骤:
1)wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
2)sudo tar -zxvf tcl8.6.1-src.tar.gz -C /usr/local/
3)cd /usr/local/tcl8.6.1/unix
4)sudo ./configure
5)sudo make
6)make install
2.5 安装完之后Redis所在的目录在哪儿呢?我们首先有必要看一张图,是说各个目录的作用的,如下所示。
CentOS6.8安装完Redis之后,redis-server和redis-cli被放到了src目录下,如下所示
[root@itcast08 redis-3.0.4]# cd src/
[root@itcast08 src]# ls
adlist.c anet.o cluster.h debug.c intset.c Makefile object.o redisassert.h redis-cli.c rio.c sha1.c syncio.c t_zset.o zmalloc.c
adlist.h aof.c cluster.o debug.o intset.h Makefile.dep pqsort.c redis-benchmark redis-cli.o rio.h sha1.h syncio.o util.c zmalloc.h
adlist.o aof.o config.c dict.c intset.o memtest.c pqsort.h redis-benchmark.c redis.h rio.o sha1.o testhelp.h util.h zmalloc.o
ae.c asciilogo.h config.h dict.h latency.c memtest.o pqsort.o redis-benchmark.o redis.o scripting.c slowlog.c t_hash.c util.o
ae_epoll.c bio.c config.o dict.o latency.h mkreleasehdr.sh pubsub.c redis.c redis-sentinel scripting.o slowlog.h t_hash.o valgrind.sup
ae_evport.c bio.h crc16.c endianconv.c latency.o multi.c pubsub.o redis-check-aof redis-server sds.c slowlog.o t_list.c version.h
ae.h bio.o crc16.o endianconv.h lzf_c.c multi.o rand.c redis-check-aof.c redis-trib.rb sds.h solarisfixes.h t_list.o ziplist.c
ae_kqueue.c bitops.c crc64.c endianconv.o lzf_c.o networking.c rand.h redis-check-aof.o release.c sds.o sort.c t_set.c ziplist.h
ae.o bitops.o crc64.h fmacros.h lzf_d.c networking.o rand.o redis-check-dump release.h sentinel.c sort.o t_set.o ziplist.o
ae_select.c blocked.c crc64.o help.h lzf_d.o notify.c rdb.c redis-check-dump.c release.o sentinel.o sparkline.c t_string.c zipmap.c
anet.c blocked.o db.c hyperloglog.c lzf.h notify.o rdb.h redis-check-dump.o replication.c setproctitle.c sparkline.h t_string.o zipmap.h
anet.h cluster.c db.o hyperloglog.o lzfP.h object.c rdb.o redis-cli replication.o setproctitle.o sparkline.o t_zset.c zipmap.o
我们要启动Redis的话,需要修改redis-conf这个文件的参数
[root@itcast08 redis-3.0.4]# ls
00-RELEASENOTES BUGS CONTRIBUTING COPYING deps INSTALL Makefile MANIFESTO README redis.conf runtest runtest-cluster runtest-sentinel sentinel.conf src tests utils
[root@itcast08 redis-3.0.4]# vim redis.conf
# Redis configuration file example
# Note on units: when memory size is needed, it is possible to specify
# it in the usual form of 1k 5GB 4M and so forth:
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes
# When running daemonized, Redis writes a pid file in /var/run/redis.pid by
# default. You can specify a custom pid file location here.
pidfile /var/run/redis.pid
# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379
下面我们来启动redis-server
[root@itcast08 src]# ./redis-server /opt/redis-3.0.4/redis.conf
接着启动客户端
[root@itcast08 src]# ./redis-cli -p 6379
设置一个变量k1,值是hello
127.0.0.1:6379> set k1 hello
OK
获取我们刚才设置的k1的值
127.0.0.1:6379> get k1
"hello"
127.0.0.1:6379>
如果我们想查看redis服务有没有启动的话,可以使用如下命令:
[root@itcast08 src]# ps -ef|grep redis
root 3300 1 0 15:26 ? 00:00:02 ./redis-server *:6379
root 3402 3008 0 15:52 pts/2 00:00:00 grep redis
[root@itcast08 src]#
如果想退出redis服务,可以进行如下操作:
127.0.0.1:6379> SHUTDOWNnot connected> exit
[root@itcast08 src]# ps -ef|grep redis
root 3406 3008 0 15:56 pts/2 00:00:00 grep redis
[root@itcast08 src]#
好,本小节我们便一起学习到这里