redis 学习--基础1 build and run
来源:互联网 发布:心事无人知 原唱 编辑:程序博客网 时间:2024/05/17 02:24
redis这么火,我也试着自己看看学习学习吧。
1. redis简介:
REmote DIctionary Server(Redis)是一个由Salvatore Sanfilippo写的key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
性能
下面是官方的bench-mark数据:
The test was done with 50 simultaneous clientsperforming 100000 requests.
The value SET and GET is a 256 bytes string.
The Linux box is running Linux 2.6, it’s XeonX3320 2.5Ghz.
Text executed using the loopback interface(127.0.0.1).
Results: about 110000 SETs per second, about81000 GETs per second
•Redis是一款开源的、高性能的键-值存储(key-valuestore)。它常被称作是一款数据结构服务器(data structure server)。Redis的键值可以包括字符串(strings)类型,同时它还包括哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于这些数据类型,你可以执行原子操作。例如:对字符串进行附加操作(append);递增哈希中的值;向列表中增加元素;计算集合的交集、并集与差集等。
•为了获得优异的性能,Redis采用了内存中(in-memory)数据集(dataset)的方式。同时,Redis支持数据的持久化,你可以每隔一段时间将数据集转存到磁盘上(snapshot),或者在日志尾部追加每一条操作命令(append only file,aof)。
•Redis同样支持主从复制(master-slave replication),并且具有非常快速的非阻塞首次同步( non-blocking first synchronization)、网络断开自动重连等功能。同时Redis还具有其它一些特性,其中包括简单的事物支持、发布订阅 ( pub/sub)、管道(pipeline)和虚拟内存(vm)等 。
•Redis具有丰富的客户端,支持现阶段流行的大多数编程语言。( http://redis.io/clients)
2.安装
从官方网站上:http://code.google.com/p/redis/downloads/list?can=1下载相应的版本。
稳定的版本号为偶数,奇数为测试版本。
当前下载的版本为:redis-2.6.10.tar.gz
解压:redis-2.6.10
gzip –d redis-2.6.10.tar.gz
tar –xvf redis-2.6.10.tar
3. build
build 环境: Linux 6.3
[/u1/yyang/study/redis/redis-2.6.10](110)yyang@dcmvrh12#uname -aLinux dcmvrh12 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux执行make 命令build redis
[/u1/yyang/study/redis/redis-2.6.10](107)yyang@dcmvrh12#makecd src && make allmake[1]: Entering directory `/users/denver/yyang/study/redis/redis-2.6.10/src'rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-dump redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html(cd ../deps && make distclean)make[2]: Entering directory `/users/denver/yyang/study/redis/redis-2.6.10/deps'(cd hiredis && make clean) > /dev/null || true(cd linenoise && make clean) > /dev/null || true(cd lua && make clean) > /dev/null || true(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true(rm -f .make-*)make[2]: Leaving directory `/users/denver/yyang/study/redis/redis-2.6.10/deps'(rm -f .make-*)echo STD=-std=c99 -pedantic >> .make-settingsecho WARN=-Wall >> .make-settingsecho OPT=-O2 >> .make-settingsecho MALLOC=jemalloc >> .make-settingsecho CFLAGS= >> .make-settingsecho LDFLAGS= >> .make-settingsecho REDIS_CFLAGS= >> .make-settingsecho REDIS_LDFLAGS= >> .make-settingsecho PREV_FINAL_CFLAGS=-std=c99 -pedantic -Wall -O2 -g -rdynamic -ggdb -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settingsecho PREV_FINAL_LDFLAGS= -g -rdynamic -ggdb >> .make-settings(cd ../deps && make hiredis linenoise lua jemalloc)make[2]: Entering directory `/users/denver/yyang/study/redis/redis-2.6.10/deps'(cd hiredis && make clean) > /dev/null || true(cd linenoise && make clean) > /dev/null || true(cd lua && make clean) > /dev/null || true(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true(rm -f .make-*)(echo "" > .make-ldflags)(echo "" > .make-cflags)MAKE hirediscd hiredis && make staticmake[3]: Entering directory `/users/denver/yyang/study/redis/redis-2.6.10/deps/hiredis'cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.ccc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb hiredis.ccc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb sds.ccc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb async.car rcs libhiredis.a net.o hiredis.o sds.o async.omake[3]: Leaving directory `/users/denver/yyang/study/redis/redis-2.6.10/deps/hiredis'MAKE linenoisecd linenoise && makemake[3]: Entering directory `/users/denver/yyang/study/redis/redis-2.6.10/deps/linenoise'cc -Wall -Os -g -c linenoise.cmake[3]: Leaving directory `/users/denver/yyang/study/redis/redis-2.6.10/deps/linenoise'MAKE luacd lua/src && make all CFLAGS="-O2 -Wall -DLUA_ANSI " MYLDFLAGS=""make[3]: Entering directory `/users/denver/yyang/study/redis/redis-2.6.10/deps/lua/src'gcc -O2 -Wall -DLUA_ANSI -c -o lapi.o lapi.cgcc -O2 -Wall -DLUA_ANSI -c -o lcode.o lcode.cgcc -O2 -Wall -DLUA_ANSI -c -o ldebug.o ldebug.cgcc -O2 -Wall -DLUA_ANSI -c -o ldo.o ldo.cgcc -O2 -Wall -DLUA_ANSI -c -o ldump.o ldump.cgcc -O2 -Wall -DLUA_ANSI -c -o lfunc.o lfunc.cgcc -O2 -Wall -DLUA_ANSI -c -o lgc.o lgc.cgcc -O2 -Wall -DLUA_ANSI -c -o llex.o llex.cgcc -O2 -Wall -DLUA_ANSI -c -o lmem.o lmem.cgcc -O2 -Wall -DLUA_ANSI -c -o lobject.o lobject.cgcc -O2 -Wall -DLUA_ANSI -c -o lopcodes.o lopcodes.cgcc -O2 -Wall -DLUA_ANSI -c -o lparser.o lparser.cgcc -O2 -Wall -DLUA_ANSI -c -o lstate.o lstate.cgcc -O2 -Wall -DLUA_ANSI -c -o lstring.o lstring.cgcc -O2 -Wall -DLUA_ANSI -c -o ltable.o ltable.cgcc -O2 -Wall -DLUA_ANSI -c -o ltm.o ltm.cgcc -O2 -Wall -DLUA_ANSI -c -o lundump.o lundump.cgcc -O2 -Wall -DLUA_ANSI -c -o lvm.o lvm.cgcc -O2 -Wall -DLUA_ANSI -c -o lzio.o lzio.cgcc -O2 -Wall -DLUA_ANSI -c -o strbuf.o strbuf.cgcc -O2 -Wall -DLUA_ANSI -c -o lauxlib.o lauxlib.cgcc -O2 -Wall -DLUA_ANSI -c -o lbaselib.o lbaselib.cgcc -O2 -Wall -DLUA_ANSI -c -o ldblib.o ldblib.cgcc -O2 -Wall -DLUA_ANSI -c -o liolib.o liolib.cgcc -O2 -Wall -DLUA_ANSI -c -o lmathlib.o lmathlib.cgcc -O2 -Wall -DLUA_ANSI -c -o loslib.o loslib.cgcc -O2 -Wall -DLUA_ANSI -c -o ltablib.o ltablib.cgcc -O2 -Wall -DLUA_ANSI -c -o lstrlib.o lstrlib.cgcc -O2 -Wall -DLUA_ANSI -c -o loadlib.o loadlib.cgcc -O2 -Wall -DLUA_ANSI -c -o linit.o linit.cgcc -O2 -Wall -DLUA_ANSI -c -o lua_cjson.o lua_cjson.cgcc -O2 -Wall -DLUA_ANSI -c -o lua_struct.o lua_struct.cgcc -O2 -Wall -DLUA_ANSI -c -o lua_cmsgpack.o lua_cmsgpack.car rcu liblua.a lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem. ring.o ltable.o ltm.o lundump.o lvm.o lzio.o strbuf.o lauxlib.o lbaselib.o ldbli trlib.o loadlib.o linit.o lua_cjson.o lua_struct.o lua_cmsgpack.oranlib liblua.agcc -O2 -Wall -DLUA_ANSI -c -o lua.o lua.cgcc -o lua lua.o liblua.a -lmliblua.a(loslib.o): In function `os_tmpname':loslib.c:(.text+0x35): warning: the use of `tmpnam' is dangerous, better use `mkstemp'gcc -O2 -Wall -DLUA_ANSI -c -o luac.o luac.cgcc -O2 -Wall -DLUA_ANSI -c -o print.o print.cgcc -o luac luac.o print.o liblua.a -lmmake[3]: Leaving directory `/users/denver/yyang/study/redis/redis-2.6.10/deps/lua/src'MAKE jemalloccd jemalloc && ./configure --with-jemalloc-prefix=je_ --enable-cc-silence CFLAGS="-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops " LDFLAGS=""checking for xsltproc... /usr/bin/xsltprocchecking for gcc... gccchecking whether the C compiler works... yeschecking for C compiler default output file name... a.outchecking for suffix of executables...checking whether we are cross compiling... nochecking for suffix of object files... ochecking whether we are using the GNU C compiler... yeschecking whether gcc accepts -g... yeschecking for gcc option to accept ISO C89... none neededchecking how to run the C preprocessor... gcc -Echecking for grep that handles long lines and -e... /bin/grepchecking for egrep... /bin/grep -Echecking for ANSI C header files... yeschecking for sys/types.h... yeschecking for sys/stat.h... yeschecking for stdlib.h... yeschecking for string.h... yeschecking for memory.h... yeschecking for strings.h... yeschecking for inttypes.h... yeschecking for stdint.h... yeschecking for unistd.h... yeschecking size of void *... 8checking size of int... 4checking size of long... 8checking size of intmax_t... 8checking build system type... x86_64-unknown-linux-gnuchecking host system type... x86_64-unknown-linux-gnuchecking whether __asm__ syntax is compilable... yeschecking whether __attribute__ syntax is compilable... yeschecking whether compiler supports -fvisibility=hidden... yeschecking whether compiler supports -Werror... yeschecking whether tls_model attribute is compilable... yeschecking for a BSD-compatible install... /usr/bin/install -cchecking for ranlib... ranlibchecking for ar... /usr/bin/archecking for ld... /usr/bin/ldchecking for autoconf... /usr/bin/autoconfchecking for memalign... yeschecking for valloc... yeschecking configured backtracing method... N/Achecking for sbrk... yeschecking whether utrace(2) is compilable... nochecking whether valgrind is compilable... nochecking STATIC_PAGE_SHIFT... 12checking pthread.h usability... yeschecking pthread.h presence... yeschecking for pthread.h... yeschecking for pthread_create in -lpthread... yeschecking for _malloc_thread_cleanup... nochecking for _pthread_mutex_init_calloc_cb... nochecking for TLS... yeschecking whether a program using ffsl is compilable... yeschecking whether atomic(9) is compilable... nochecking whether Darwin OSAtomic*() is compilable... nochecking whether to force 32-bit __sync_{add,sub}_and_fetch()... nochecking whether to force 64-bit __sync_{add,sub}_and_fetch()... nochecking whether Darwin OSSpin*() is compilable... nochecking for stdbool.h that conforms to C99... yeschecking for _Bool... yesconfigure: creating ./config.statusconfig.status: creating Makefileconfig.status: creating doc/html.xslconfig.status: creating doc/manpages.xslconfig.status: creating doc/jemalloc.xmlconfig.status: creating include/jemalloc/jemalloc.hconfig.status: creating include/jemalloc/internal/jemalloc_internal.hconfig.status: creating test/jemalloc_test.hconfig.status: creating config.stampconfig.status: creating bin/jemalloc.shconfig.status: creating include/jemalloc/jemalloc_defs.hconfig.status: executing include/jemalloc/internal/size_classes.h commands===============================================================================jemalloc version : 3.2.0-0-g87499f6748ebe4817571e817e9f680ccb5bf54a9library revision : 1CC : gccCPPFLAGS : -D_GNU_SOURCE -D_REENTRANTCFLAGS : -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -fvisibility=hiddenLDFLAGS :LIBS : -lm -lpthreadRPATH_EXTRA :XSLTPROC : /usr/bin/xsltprocXSLROOT : /usr/share/sgml/docbook/xsl-stylesheetsPREFIX : /usr/localBINDIR : /usr/local/binINCLUDEDIR : /usr/local/includeLIBDIR : /usr/local/libDATADIR : /usr/local/shareMANDIR : /usr/local/share/mansrcroot :abs_srcroot : /u1/yyang/study/redis/redis-2.6.10/deps/jemalloc/objroot :abs_objroot : /u1/yyang/study/redis/redis-2.6.10/deps/jemalloc/JEMALLOC_PREFIX : je_JEMALLOC_PRIVATE_NAMESPACE :install_suffix :autogen : 0experimental : 1cc-silence : 1debug : 0stats : 1prof : 0prof-libunwind : 0prof-libgcc : 0prof-gcc : 0tcache : 1fill : 1utrace : 0valgrind : 0xmalloc : 0mremap : 0munmap : 0dss : 0lazy_lock : 0tls : 1===============================================================================cd jemalloc && make CFLAGS="-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops " LDFLAGS="" lib/libjemalloc.amake[3]: Entering directory `/users/denver/yyang/study/redis/redis-2.6.10/deps/jemalloc'gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/jemalloc.o src/jemalloc.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/arena.o src/arena.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/atomic.o src/atomic.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/base.o src/base.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/bitmap.o src/bitmap.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/chunk.o src/chunk.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/chunk_dss.o src/chunk_dss.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/chunk_mmap.o src/chunk_mmap.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/ckh.o src/ckh.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/ctl.o src/ctl.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/extent.o src/extent.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/hash.o src/hash.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/huge.o src/huge.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/mb.o src/mb.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/mutex.o src/mutex.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/prof.o src/prof.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/quarantine.o src/quarantine.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/rtree.o src/rtree.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/stats.o src/stats.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/tcache.o src/tcache.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/util.o src/util.cgcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/tsd.o src/tsd.car crus lib/libjemalloc.a src/jemalloc.o src/arena.o src/atomic.o src/base.o src/bitmap.o src/chunk.o src/chunk_dss.o src/chunk_mmap.o src/ckh.o src/ctl.o src/extent.o src/hash.o src/huge.o src/mb.o src/mutex.o src/prof.o src/quarantine.o src/rtree.o src/stats.o src/tcache.o src/util.o src/tsd.omake[3]: Leaving directory `/users/denver/yyang/study/redis/redis-2.6.10/deps/jemalloc'make[2]: Leaving directory `/users/denver/yyang/study/redis/redis-2.6.10/deps' CC adlist.o CC ae.o CC anet.o CC dict.o CC redis.o CC sds.o CC zmalloc.o CC lzf_c.o CC lzf_d.o CC pqsort.o CC zipmap.o CC sha1.o CC ziplist.o CC release.o CC networking.o CC util.o CC object.o CC db.o CC replication.o CC rdb.o CC t_string.o CC t_list.o CC t_set.o CC t_zset.o CC t_hash.o CC config.o CC aof.o CC pubsub.o CC multi.o CC debug.o CC sort.o CC intset.o CC syncio.o CC migrate.o CC endianconv.o CC slowlog.o CC scripting.o CC bio.o CC rio.o CC rand.o CC memtest.o CC crc64.o CC bitops.o CC sentinel.o LINK redis-server INSTALL redis-sentinel CC redis-cli.o LINK redis-cli CC redis-benchmark.o LINK redis-benchmark CC redis-check-dump.o LINK redis-check-dump CC redis-check-aof.o LINK redis-check-aofHint: To run 'make test' is a good idea ;)make[1]: Leaving directory `/users/denver/yyang/study/redis/redis-2.6.10/src'build 成功后在目录/u1/yyang/study/redis/redis-2.6.10/src下生成几个二进制文件如下:
[/u1/yyang/study/redis/redis-2.6.10/src](121)yyang@dcmvrh12#ll -tr redis-sentinel redis-server redis-cli redis-benchmark redis-check-dump redis-check-aof-rwxrwxr-x 1 yyang clearusr 5485952 Nov 11 04:42 redis-server*-rwxrwxr-x 1 yyang clearusr 5485952 Nov 11 04:42 redis-sentinel*-rwxrwxr-x 1 yyang clearusr 4220050 Nov 11 04:42 redis-cli*-rwxrwxr-x 1 yyang clearusr 4160143 Nov 11 04:42 redis-benchmark*-rwxrwxr-x 1 yyang clearusr 45475 Nov 11 04:42 redis-check-dump*-rwxrwxr-x 1 yyang clearusr 22233 Nov 11 04:42 redis-check-aof*-rwxrwxr-x 1 yyang clearusr 22233 Nov 11 04:42 redis-check-aof*
其中:
redis-server:Redis服务器的daemon启动程序
redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
redis-stat:Redis状态检测工具,可以检测Redis当前状态参数及延迟状况
4.redis 配置文件详解
在我们成功安装Redis后,我们直接执行redis-server即可运行Redis,此时它是按照默认配置来运行的(默认配置甚至不是后台运行)。我们希望Redis按我们的要求运行,则我们需要修改配置文件,Redis的配置文件就是redis.conf文件。
[/u1/yyang/study/redis/redis-2.6.10] (116)yyang@dcmvrh12#ll redis.conf-rw-rw-r-- 1 yyang clearusr 24476 Nov 11 05:11 redis.conf
修改它就可以配置我们的server了。如何修改?下面是redis.conf的主要配置参数的意义:
daemonize:是否以后台daemon方式运行
pidfile:pid文件位置
port:监听的端口号
timeout:请求超时时间
loglevel:log信息级别
logfile:log文件位置
databases:开启数据库的数量
save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
rdbcompression:是否使用压缩
dbfilename:数据快照文件名(只是文件名,不包括目录)
dir:数据快照的保存目录(这个是目录)
appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
这里我们只修改它为后台进程
daemonize yes
5.run
后台启动redis服务
[/u1/yyang/study/redis/redis-2.6.10/src](122)yyang@dcmvrh12#redis-server/u1/yyang/study/redis/redis-2.6.10/redis.conf[/u1/yyang/study/redis/redis-2.6.10/src](123)yyang@dcmvrh12#ps -ef|grep redis-serveryyang 22810 1 0 05:16 ? 00:00:00 redis-server/u1/yyang/study/redis/redis-2.6.10/redis.confyyang 22908 27858 0 05:16 pts/74 00:00:00 egrep redis-server
如果没有启动client的话可以用telenet,但是很丑,不舒服,界面如下:
[/u1/yyang/study/redis/redis-2.6.10/src] (124)yyang@dcmvrh12#telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
quit
启动client:
[/u1/yyang/study/redis/redis-2.6.10/src] (127)yyang@dcmvrh12#redis-cliredis 127.0.0.1:6379>
然后你就可以进行操作了比如:
[/u1/yyang/study/redis/redis-2.6.10/src] (127)yyang@dcmvrh12#redis-cliredis 127.0.0.1:6379>set mykey "hello world"OKredis 127.0.0.1:6379> get mykey"hello world"redis 127.0.0.1:6379>好了,成功!yeah
- redis 学习--基础1 build and run
- Build and Run HDFS
- build, debug, compile and run
- BLOG: 《SWT菜谱》- 基础 - Build & Run
- redis学习--基础1
- android libcore/run-libcore-tests and vogar build
- Build CornerStone for ICS and run in emulator
- How to Build and Run Android NDK Examples?
- How to build and run the XML, RPG and DB2 sample
- Redis基础学习笔记
- redis的基础学习
- redis 基础学习
- redis基础学习
- redis基础学习总结
- Redis基础学习
- redis基础学习
- Design - Build - Run: Applied Practices and Principles for Production Ready Software Development
- How to build and run ARM Linux on QEMU from scratch
- java中filter的用法
- 《Pro Git 2》学习笔记_Chapter 1
- C# 运行时序列化
- 各种排序算法
- 插件
- redis 学习--基础1 build and run
- 信念
- Erlang的Match specifications
- 第11周 项目5 当年第几天
- 程序员眼里的ie浏览器
- Cocos2d-x优化中关于背景图片优化
- shell实例浅谈之十一单实例运行(shell运行一次)
- 第十一周项目四特殊三位数
- 偷Microsoft师学MFC艺:且看C++如何支持反射