安装 Redis
一般系统都会有软件管理工具,但是通常版本都不会太新,况且 Redis 的安装很简单,因此下面使用源码的安装方式。
- 下载源码
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
- 解压
tar -zxf redis-3.2.8.tar.gz
- 创建软连接
ln -s redis-3.2.8 redis
- 进入 redis 目录
cd redis
- 编译
make
- 安装
make install
安装完成后,在 src 和 /usr/local/bin 目录下就会多了几个以 redis-
开头的可执行文件。
可执行文件 | 说明 |
---|---|
redis-server | 启动 Redis。 |
redis-cli | Redis 命令行客户端 |
redis-benchmark | Redis 基准测试工具 |
redis-check-aof | Redis AOF 持久化文件检测与修复工具 |
redis-check-dump | Redis RDB 持久化文件检测与修复工具 |
redis-sentinel | 启动 Redis Sentinel |
查看安装的 Redis 版本是否正确:redis-cli -v
[root@glon redis]# cd
[root@glon ~]# redis-cli -v
redis-cli 3.2.8
启动 Redis
默认配置启动: redis-server
会话1:
[root@glon ~]# redis-server
12746:C 10 Mar 08:56:02.401 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
12746:M 10 Mar 08:56:02.403 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.8 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 12746
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
12746:M 10 Mar 08:56:02.446 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
12746:M 10 Mar 08:56:02.446 # Server started, Redis version 3.2.8
12746:M 10 Mar 08:56:02.446 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
12746:M 10 Mar 08:56:02.447 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
12746:M 10 Mar 08:56:02.447 * The server is now ready to accept connections on port 6379
会话2:
[root@glon ~]# ps aux | grep redis
root 12746 0.2 0.7 133536 7856 pts/1 Sl+ 08:56 0:00 redis-server *:6379
root 12857 0.0 0.0 103312 876 pts/0 S+ 09:01 0:00 grep redis
直接使用 redis-server 启动,用的是 /usr/local/redis 目录下的 redis.conf 配置文件,里面就是默认的配置。
启动 Redis 后,会打印出一些日志,通过日志可以看到一些信息,从上面的输出中可以看到:
- 当前的 Redis 版本的是 3.2.8;
- Redis 的默认端口是 6379;
- Redis 建议要使用配置文件来启动;
运行时配置启动: redis-server --key1 value1 --key2 value2 ... --keyN valueN
示例:指定端口启动
会话1:
[root@glon ~]# redis-server --port 3306
12858:M 10 Mar 09:03:08.190 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.8 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 3306
| `-._ `._ / _.-' | PID: 12858
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
12858:M 10 Mar 09:03:08.237 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
12858:M 10 Mar 09:03:08.237 # Server started, Redis version 3.2.8
12858:M 10 Mar 09:03:08.238 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
12858:M 10 Mar 09:03:08.238 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
12858:M 10 Mar 09:03:08.238 * DB loaded from disk: 0.000 seconds
12858:M 10 Mar 09:03:08.238 * The server is now ready to accept connections on port 3306
会话2:
[root@glon ~]# ps aux | grep redis
root 12858 0.2 0.7 133536 7880 pts/1 Sl+ 09:03 0:00 redis-server *:3306
root 12862 0.0 0.0 103312 876 pts/0 S+ 09:03 0:00 grep redis
可以看到,Redis 监听的端口是 3306,而不是默认的 6379 了。
在简单测试或临时使用时可以使用这种方式。
当然,如果需要指定的配置项很多的话,我想,不用说,你也会选择使用下面这种启动方式。
指定配置文件启动: redis-server /path/to/conf
示例:修改配置文件中的端口,然后启动
会话1:
[root@glon ~]# redis-server /usr/local/redis/redis.conf
12865:M 10 Mar 09:05:59.258 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.8 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 63790
| `-._ `._ / _.-' | PID: 12865
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
12865:M 10 Mar 09:05:59.277 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
12865:M 10 Mar 09:05:59.277 # Server started, Redis version 3.2.8
12865:M 10 Mar 09:05:59.277 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
12865:M 10 Mar 09:05:59.277 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
12865:M 10 Mar 09:05:59.277 * DB loaded from disk: 0.000 seconds
12865:M 10 Mar 09:05:59.277 * The server is now ready to accept connections on port 63790
会话2:
[root@glon ~]# ps aux | grep redis
root 12865 0.2 0.7 133536 7892 pts/1 Sl+ 09:31 0:00 redis-server 127.0.0.1:63790
root 12869 0.0 0.0 103312 876 pts/0 S+ 09:33 0:00 grep redis
指定配置文件启动是推荐使用的一种方式,一方面持久化配置,方便以后查阅,另一方面,一台服务器上通常都会部署多个实例,指定配置文件更方便管理。
使用命令行客户端来进行交互
交互模式:redis-cli -h ip/host -p port
[root@glon ~]# redis-cli -h localhost -p 63790
localhost:63790> keys *
(empty list or set)
localhost:63790> set name glon
OK
localhost:63790> get name
"glon"
localhost:63790>
如果不指定-h 和 -p,默认 -h 是 127.0.0.1,-p 是 6379。
注意:选项和值之间用空格隔开。
直接执行命令并得到结果,不进入交互模式:redis-cli -h ip/host -p port command
[root@glon ~]# redis-cli -h localhost -p 63790 get name
"glon"
退出交互模式:exit
[root@glon ~]# redis-cli -h localhost -p 63790
localhost:63790> keys *
(empty list or set)
localhost:63790> set name glon
OK
localhost:63790> get name
"glon"
localhost:63790> exit
[root@glon ~]#
停止 Redis 服务:redis-cli shutdown
客户端:
[root@glon ~]# redis-cli -h localhost -p 63790 shutdown
[root@glon ~]#
服务端:
12876:M 10 Mar 09:42:50.257 # User requested shutdown...
12876:M 10 Mar 09:42:50.257 * Saving the final RDB snapshot before exiting.
12876:M 10 Mar 09:42:50.268 * DB saved on disk
12876:M 10 Mar 09:42:50.268 * Removing the pid file.
12876:M 10 Mar 09:42:50.268 # Redis is now ready to exit, bye bye...
从服务端输出的日志可以看到,整个关闭的执行过程:
- 客户端发出 shutdown 命令行客户端
- 执行 RDB 持久化操作
- 保存 RDB 文件到磁盘上
- 移除 pid 文件
- 关闭 Redis 服务
默认在关闭的时候会保存 RDB 持久化文件,可以指定在关闭服务之前是否保存 RDB 文件,加速关闭服务。
redis-cli shutdown nosave|save
不建议简单粗暴地使用 kill -9 强制杀死 Redis 服务,这样不但不会做持久化的操作,而且还可能会造成未来得及持久化的数据丢失数据。
安装过程
[root@glon ~]# wget http://download.redis.io/releases/redis-3.2.8.tar.gz
--2017-03-10 07:01:15-- http://download.redis.io/releases/redis-3.2.8.tar.gz
Resolving download.redis.io... 109.74.203.151
Connecting to download.redis.io|109.74.203.151|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1547237 (1.5M) [application/x-gzip]
Saving to: “redis-3.2.8.tar.gz”
100%[===================================================================================================================================================>] 1,547,237 306K/s in 5.1s
2017-03-10 07:01:21 (297 KB/s) - “redis-3.2.8.tar.gz” saved [1547237/1547237]
[root@glon ~]#
[root@glon ~]#
[root@glon ~]# tar -zxf redis-3.2.8.tar.gz
[root@glon ~]#
[root@glon ~]#
[root@glon ~]# ls
redis-3.2.8 redis-3.2.8.tar.gz
[root@glon ~]#
[root@glon ~]#
[root@glon ~]# sudo mv redis-3.2.8 /opt/redis/
[root@glon ~]#
[root@glon ~]#
[root@glon ~]# ls /opt/
mysql redis VBoxGuestAdditions-5.0.16 VBoxGuestAdditions-5.0.26
[root@glon ~]#
[root@glon ~]#
[root@glon ~]# cd /usr/local/
[root@glon local]# sudo ln -s /opt/redis/redis-3.2.8 redis
[root@glon redis]#
[root@glon redis]#
[root@glon local]# ll
total 40
drwxr-xr-x. 2 root root 4096 Sep 23 2011 bin
drwxr-xr-x. 2 root root 4096 Sep 23 2011 etc
drwxr-xr-x. 2 root root 4096 Sep 23 2011 games
drwxr-xr-x. 2 root root 4096 Sep 23 2011 include
drwxr-xr-x. 2 root root 4096 Sep 23 2011 lib
drwxr-xr-x. 2 root root 4096 Sep 23 2011 lib64
drwxr-xr-x. 2 root root 4096 Sep 23 2011 libexec
lrwxrwxrwx. 1 mysql mysql 45 Jan 4 08:30 mysql -> /opt/mysql/mysql-5.7.17-linux-glibc2.5-x86_64
lrwxrwxrwx. 1 root root 22 Mar 10 07:04 redis -> /opt/redis/redis-3.2.8
drwxr-xr-x. 2 root root 4096 Sep 23 2011 sbin
drwxr-xr-x. 5 root root 4096 Mar 29 2016 share
drwxr-xr-x. 2 root root 4096 Sep 23 2011 src
[root@glon local]#
[root@glon redis]#
[root@glon local]# cd redis/
[root@glon redis]#
[root@glon redis]# ls
00-RELEASENOTES BUGS CONTRIBUTING COPYING deps INSTALL Makefile MANIFESTO README.md redis.conf runtest runtest-cluster runtest-sentinel sentinel.conf src tests utils
[root@glon redis]#
[root@glon redis]#
[root@glon redis]# ls src/
adlist.c anet.c cluster.c debug.c geo.h lzf_d.c networking.c rand.c redis-cli.c sds.c slowlog.c t_hash.c version.h
adlist.h anet.h cluster.h debugmacro.h help.h lzf.h notify.c rand.h redis-trib.rb sds.h slowlog.h t_list.c ziplist.c
ae.c aof.c config.c dict.c hyperloglog.c lzfP.h object.c rdb.c release.c sentinel.c solarisfixes.h t_set.c ziplist.h
ae_epoll.c asciilogo.h config.h dict.h intset.c Makefile pqsort.c rdb.h replication.c server.c sort.c t_string.c zipmap.c
ae_evport.c bio.c crc16.c endianconv.c intset.h Makefile.dep pqsort.h redisassert.h rio.c server.h sparkline.c t_zset.c zipmap.h
ae.h bio.h crc64.c endianconv.h latency.c memtest.c pubsub.c redis-benchmark.c rio.h setproctitle.c sparkline.h util.c zmalloc.c
ae_kqueue.c bitops.c crc64.h fmacros.h latency.h mkreleasehdr.sh quicklist.c redis-check-aof.c scripting.c sha1.c syncio.c util.h zmalloc.h
ae_select.c blocked.c db.c geo.c lzf_c.c multi.c quicklist.h redis-check-rdb.c sdsalloc.h sha1.h testhelp.h valgrind.sup
[root@glon redis]#
[root@glon redis]#
[root@glon redis]# ls /usr/local/bin/
[root@glon redis]#
[root@glon redis]#
[root@glon redis]# make
cd src && make all
make[1]: Entering directory `/opt/redis/redis-3.2.8/src'
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html
(cd ../deps && make distclean)
make[2]: Entering directory `/opt/redis/redis-3.2.8/deps'
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd geohash-int && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
make[2]: Leaving directory `/opt/redis/redis-3.2.8/deps'
(rm -f .make-*)
echo STD=-std=c99 -pedantic -DREDIS_STATIC='' >> .make-settings
echo WARN=-Wall -W >> .make-settings
echo OPT=-O2 >> .make-settings
echo MALLOC=jemalloc >> .make-settings
echo CFLAGS= >> .make-settings
echo LDFLAGS= >> .make-settings
echo REDIS_CFLAGS= >> .make-settings
echo REDIS_LDFLAGS= >> .make-settings
echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -DREDIS_STATIC='' -Wall -W -O2 -g -ggdb -I../deps/geohash-int -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settings
echo PREV_FINAL_LDFLAGS= -g -ggdb -rdynamic >> .make-settings
(cd ../deps && make hiredis linenoise lua geohash-int jemalloc)
make[2]: Entering directory `/opt/redis/redis-3.2.8/deps'
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd geohash-int && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
(echo "" > .make-ldflags)
(echo "" > .make-cflags)
MAKE hiredis
cd hiredis && make static
make[3]: Entering directory `/opt/redis/redis-3.2.8/deps/hiredis'
cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c
cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb hiredis.c
cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb sds.c
cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb async.c
ar rcs libhiredis.a net.o hiredis.o sds.o async.o
make[3]: Leaving directory `/opt/redis/redis-3.2.8/deps/hiredis'
MAKE linenoise
cd linenoise && make
make[3]: Entering directory `/opt/redis/redis-3.2.8/deps/linenoise'
cc -Wall -Os -g -c linenoise.c
make[3]: Leaving directory `/opt/redis/redis-3.2.8/deps/linenoise'
MAKE lua
cd lua/src && make all CFLAGS="-O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' " MYLDFLAGS="" AR="ar rcu"
make[3]: Entering directory `/opt/redis/redis-3.2.8/deps/lua/src'
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lapi.o lapi.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lcode.o lcode.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o ldebug.o ldebug.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o ldo.o ldo.c
ldo.c: In function ‘f_parser’:
ldo.c:496: warning: unused variable ‘c’
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o ldump.o ldump.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lfunc.o lfunc.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lgc.o lgc.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o llex.o llex.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lmem.o lmem.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lobject.o lobject.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lopcodes.o lopcodes.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lparser.o lparser.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lstate.o lstate.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lstring.o lstring.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o ltable.o ltable.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o ltm.o ltm.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lundump.o lundump.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lvm.o lvm.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lzio.o lzio.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o strbuf.o strbuf.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o fpconv.o fpconv.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lauxlib.o lauxlib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lbaselib.o lbaselib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o ldblib.o ldblib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o liolib.o liolib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lmathlib.o lmathlib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o loslib.o loslib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o ltablib.o ltablib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lstrlib.o lstrlib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o loadlib.o loadlib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o linit.o linit.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lua_cjson.o lua_cjson.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lua_struct.o lua_struct.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lua_cmsgpack.o lua_cmsgpack.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lua_bit.o lua_bit.c
ar rcu liblua.a lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o strbuf.o fpconv.o lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o lstrlib.o loadlib.o linit.o lua_cjson.o lua_struct.o lua_cmsgpack.o lua_bit.o # DLL needs all object files
ranlib liblua.a
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o lua.o lua.c
cc -o lua lua.o liblua.a -lm
liblua.a(loslib.o): In function `os_tmpname':
loslib.c:(.text+0x35): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o luac.o luac.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o print.o print.c
cc -o luac luac.o print.o liblua.a -lm
make[3]: Leaving directory `/opt/redis/redis-3.2.8/deps/lua/src'
MAKE geohash-int
cd geohash-int && make
make[3]: Entering directory `/opt/redis/redis-3.2.8/deps/geohash-int'
cc -Wall -O2 -g -c geohash.c
cc -Wall -O2 -g -c geohash_helper.c
make[3]: Leaving directory `/opt/redis/redis-3.2.8/deps/geohash-int'
MAKE jemalloc
cd jemalloc && ./configure --with-lg-quantum=3 --with-jemalloc-prefix=je_ --enable-cc-silence CFLAGS="-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops " LDFLAGS=""
checking for xsltproc... false
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking whether byte ordering is bigendian... no
checking size of void *... 8
checking size of int... 4
checking size of long... 8
checking size of intmax_t... 8
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking whether pause instruction is compilable... yes
checking for ar... ar
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking whether malloc_usable_size definition can use const argument... no
checking whether __attribute__ syntax is compilable... yes
checking whether compiler supports -fvisibility=hidden... yes
checking whether compiler supports -Werror... yes
checking whether tls_model attribute is compilable... yes
checking whether compiler supports -Werror... yes
checking whether alloc_size attribute is compilable... yes
checking whether compiler supports -Werror... yes
checking whether format(gnu_printf, ...) attribute is compilable... yes
checking whether compiler supports -Werror... yes
checking whether format(printf, ...) attribute is compilable... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for ranlib... ranlib
checking for ld... /usr/bin/ld
checking for autoconf... false
checking for memalign... yes
checking for valloc... yes
checking configured backtracing method... N/A
checking for sbrk... yes
checking whether utrace(2) is compilable... no
checking whether valgrind is compilable... no
checking whether a program using __builtin_ffsl is compilable... yes
checking LG_PAGE... 12
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
checking for pthread_create in -lpthread... yes
checking for library containing clock_gettime... -lrt
checking for secure_getenv... no
checking for issetugid... no
checking for _malloc_thread_cleanup... no
checking for _pthread_mutex_init_calloc_cb... no
checking for TLS... yes
checking whether C11 atomics is compilable... no
checking whether atomic(9) is compilable... no
checking whether Darwin OSAtomic*() is compilable... no
checking whether madvise(2) is compilable... yes
checking whether to force 32-bit __sync_{add,sub}_and_fetch()... no
checking whether to force 64-bit __sync_{add,sub}_and_fetch()... no
checking for __builtin_clz... yes
checking whether Darwin OSSpin*() is compilable... no
checking whether glibc malloc hook is compilable... yes
checking whether glibc memalign hook is compilable... yes
checking whether pthreads adaptive mutexes is compilable... yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating jemalloc.pc
config.status: creating doc/html.xsl
config.status: creating doc/manpages.xsl
config.status: creating doc/jemalloc.xml
config.status: creating include/jemalloc/jemalloc_macros.h
config.status: creating include/jemalloc/jemalloc_protos.h
config.status: creating include/jemalloc/jemalloc_typedefs.h
config.status: creating include/jemalloc/internal/jemalloc_internal.h
config.status: creating test/test.sh
config.status: creating test/include/test/jemalloc_test.h
config.status: creating config.stamp
config.status: creating bin/jemalloc-config
config.status: creating bin/jemalloc.sh
config.status: creating bin/jeprof
config.status: creating include/jemalloc/jemalloc_defs.h
config.status: creating include/jemalloc/internal/jemalloc_internal_defs.h
config.status: creating test/include/test/jemalloc_test_defs.h
config.status: executing include/jemalloc/internal/private_namespace.h commands
config.status: executing include/jemalloc/internal/private_unnamespace.h commands
config.status: executing include/jemalloc/internal/public_symbols.txt commands
config.status: executing include/jemalloc/internal/public_namespace.h commands
config.status: executing include/jemalloc/internal/public_unnamespace.h commands
config.status: executing include/jemalloc/internal/size_classes.h commands
config.status: executing include/jemalloc/jemalloc_protos_jet.h commands
config.status: executing include/jemalloc/jemalloc_rename.h commands
config.status: executing include/jemalloc/jemalloc_mangle.h commands
config.status: executing include/jemalloc/jemalloc_mangle_jet.h commands
config.status: executing include/jemalloc/jemalloc.h commands
===============================================================================
jemalloc version : 4.0.3-0-ge9192eacf8935e29fc62fddc2701f7942b1cc02c
library revision : 2
CONFIG : --with-lg-quantum=3 --with-jemalloc-prefix=je_ --enable-cc-silence 'CFLAGS=-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops ' LDFLAGS=
CC : gcc
CFLAGS : -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -fvisibility=hidden
CPPFLAGS : -D_GNU_SOURCE -D_REENTRANT
LDFLAGS :
EXTRA_LDFLAGS :
LIBS : -lpthread
TESTLIBS : -lrt
RPATH_EXTRA :
XSLTPROC : false
XSLROOT :
PREFIX : /usr/local
BINDIR : /usr/local/bin
DATADIR : /usr/local/share
INCLUDEDIR : /usr/local/include
LIBDIR : /usr/local/lib
MANDIR : /usr/local/share/man
srcroot :
abs_srcroot : /usr/local/redis/deps/jemalloc/
objroot :
abs_objroot : /usr/local/redis/deps/jemalloc/
JEMALLOC_PREFIX : je_
JEMALLOC_PRIVATE_NAMESPACE
: je_
install_suffix :
autogen : 0
cc-silence : 1
debug : 0
code-coverage : 0
stats : 1
prof : 0
prof-libunwind : 0
prof-libgcc : 0
prof-gcc : 0
tcache : 1
fill : 1
utrace : 0
valgrind : 0
xmalloc : 0
munmap : 0
lazy_lock : 0
tls : 1
cache-oblivious : 1
===============================================================================
cd jemalloc && make CFLAGS="-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops " LDFLAGS="" lib/libjemalloc.a
make[3]: Entering directory `/opt/redis/redis-3.2.8/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.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/arena.o src/arena.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/atomic.o src/atomic.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/base.o src/base.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/bitmap.o src/bitmap.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/chunk.o src/chunk.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/chunk_dss.o src/chunk_dss.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/chunk_mmap.o src/chunk_mmap.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/ckh.o src/ckh.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/ctl.o src/ctl.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/extent.o src/extent.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/hash.o src/hash.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/huge.o src/huge.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/mb.o src/mb.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/mutex.o src/mutex.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/pages.o src/pages.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/prof.o src/prof.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/quarantine.o src/quarantine.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/rtree.o src/rtree.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/stats.o src/stats.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/tcache.o src/tcache.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/util.o src/util.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/tsd.o src/tsd.c
ar 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/pages.o src/prof.o src/quarantine.o src/rtree.o src/stats.o src/tcache.o src/util.o src/tsd.o
make[3]: Leaving directory `/opt/redis/redis-3.2.8/deps/jemalloc'
make[2]: Leaving directory `/opt/redis/redis-3.2.8/deps'
CC adlist.o
CC quicklist.o
CC ae.o
In file included from ae.c:53:
ae_epoll.c: In function ‘aeApiAddEvent’:
ae_epoll.c:75: warning: missing initializer
ae_epoll.c:75: warning: (near initialization for ‘ee.data’)
ae_epoll.c: In function ‘aeApiDelEvent’:
ae_epoll.c:92: warning: missing initializer
ae_epoll.c:92: warning: (near initialization for ‘ee.data’)
CC anet.o
anet.c: In function ‘anetSockName’:
anet.c:640: warning: dereferencing pointer ‘s’ does break strict-aliasing rules
anet.c:638: note: initialized from here
anet.c:644: warning: dereferencing pointer ‘s’ does break strict-aliasing rules
anet.c:642: note: initialized from here
anet.c: In function ‘anetPeerToString’:
anet.c:584: warning: dereferencing pointer ‘s’ does break strict-aliasing rules
anet.c:582: note: initialized from here
anet.c:588: warning: dereferencing pointer ‘s’ does break strict-aliasing rules
anet.c:586: note: initialized from here
anet.c: In function ‘anetTcpAccept’:
anet.c:555: warning: dereferencing pointer ‘s’ does break strict-aliasing rules
anet.c:553: note: initialized from here
anet.c:559: warning: dereferencing pointer ‘s’ does break strict-aliasing rules
anet.c:557: note: initialized from here
CC dict.o
CC server.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 cluster.o
CC crc16.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
CC notify.o
CC setproctitle.o
CC blocked.o
CC hyperloglog.o
CC latency.o
CC sparkline.o
CC redis-check-rdb.o
CC geo.o
LINK redis-server
INSTALL redis-sentinel
CC redis-cli.o
LINK redis-cli
CC redis-benchmark.o
LINK redis-benchmark
INSTALL redis-check-rdb
CC redis-check-aof.o
LINK redis-check-aof
Hint: It's a good idea to run 'make test' ;)
make[1]: Leaving directory `/opt/redis/redis-3.2.8/src'
[root@glon redis]#
[root@glon redis]#
[root@glon redis]# ls
00-RELEASENOTES BUGS CONTRIBUTING COPYING deps INSTALL Makefile MANIFESTO README.md redis.conf runtest runtest-cluster runtest-sentinel sentinel.conf src tests utils
[root@glon redis]# ls src/
adlist.c aof.c config.c dict.c intset.c Makefile.dep pqsort.h redisassert.h redis-sentinel sdsalloc.h sha1.o t_hash.c valgrind.sup
adlist.h aof.o config.h dict.h intset.h memtest.c pqsort.o redis-benchmark redis-server sds.c slowlog.c t_hash.o version.h
adlist.o asciilogo.h config.o dict.o intset.o memtest.o pubsub.c redis-benchmark.c redis-trib.rb sds.h slowlog.h t_list.c ziplist.c
ae.c bio.c crc16.c endianconv.c latency.c mkreleasehdr.sh pubsub.o redis-benchmark.o release.c sds.o slowlog.o t_list.o ziplist.h
ae_epoll.c bio.h crc16.o endianconv.h latency.h multi.c quicklist.c redis-check-aof release.h sentinel.c solarisfixes.h t_set.c ziplist.o
ae_evport.c bio.o crc64.c endianconv.o latency.o multi.o quicklist.h redis-check-aof.c release.o sentinel.o sort.c t_set.o zipmap.c
ae.h bitops.c crc64.h fmacros.h lzf_c.c networking.c quicklist.o redis-check-aof.o replication.c server.c sort.o t_string.c zipmap.h
ae_kqueue.c bitops.o crc64.o geo.c lzf_c.o networking.o rand.c redis-check-rdb replication.o server.h sparkline.c t_string.o zipmap.o
ae.o blocked.c db.c geo.h lzf_d.c notify.c rand.h redis-check-rdb.c rio.c server.o sparkline.h t_zset.c zmalloc.c
ae_select.c blocked.o db.o geo.o lzf_d.o notify.o rand.o redis-check-rdb.o rio.h setproctitle.c sparkline.o t_zset.o zmalloc.h
anet.c cluster.c debug.c help.h lzf.h object.c rdb.c redis-cli rio.o setproctitle.o syncio.c util.c zmalloc.o
anet.h cluster.h debugmacro.h hyperloglog.c lzfP.h object.o rdb.h redis-cli.c scripting.c sha1.c syncio.o util.h
anet.o cluster.o debug.o hyperloglog.o Makefile pqsort.c rdb.o redis-cli.o scripting.o sha1.h testhelp.h util.o
[root@glon redis]#
[root@glon redis]#
[root@glon redis]# ls /usr/local/bin/
[root@glon redis]#
[root@glon redis]#
[root@glon redis]# make install
cd src && make install
make[1]: Entering directory `/opt/redis/redis-3.2.8/src'
Hint: It's a good idea to run 'make test' ;)
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install
make[1]: Leaving directory `/opt/redis/redis-3.2.8/src'
[root@glon redis]#
[root@glon redis]#
[root@glon redis]# ls
00-RELEASENOTES BUGS CONTRIBUTING COPYING deps INSTALL Makefile MANIFESTO README.md redis.conf runtest runtest-cluster runtest-sentinel sentinel.conf src tests utils
[root@glon redis]#
[root@glon redis]#
[root@glon redis]# ls src/
adlist.c aof.c config.c dict.c intset.c Makefile.dep pqsort.h redisassert.h redis-sentinel sdsalloc.h sha1.o t_hash.c valgrind.sup
adlist.h aof.o config.h dict.h intset.h memtest.c pqsort.o redis-benchmark redis-server sds.c slowlog.c t_hash.o version.h
adlist.o asciilogo.h config.o dict.o intset.o memtest.o pubsub.c redis-benchmark.c redis-trib.rb sds.h slowlog.h t_list.c ziplist.c
ae.c bio.c crc16.c endianconv.c latency.c mkreleasehdr.sh pubsub.o redis-benchmark.o release.c sds.o slowlog.o t_list.o ziplist.h
ae_epoll.c bio.h crc16.o endianconv.h latency.h multi.c quicklist.c redis-check-aof release.h sentinel.c solarisfixes.h t_set.c ziplist.o
ae_evport.c bio.o crc64.c endianconv.o latency.o multi.o quicklist.h redis-check-aof.c release.o sentinel.o sort.c t_set.o zipmap.c
ae.h bitops.c crc64.h fmacros.h lzf_c.c networking.c quicklist.o redis-check-aof.o replication.c server.c sort.o t_string.c zipmap.h
ae_kqueue.c bitops.o crc64.o geo.c lzf_c.o networking.o rand.c redis-check-rdb replication.o server.h sparkline.c t_string.o zipmap.o
ae.o blocked.c db.c geo.h lzf_d.c notify.c rand.h redis-check-rdb.c rio.c server.o sparkline.h t_zset.c zmalloc.c
ae_select.c blocked.o db.o geo.o lzf_d.o notify.o rand.o redis-check-rdb.o rio.h setproctitle.c sparkline.o t_zset.o zmalloc.h
anet.c cluster.c debug.c help.h lzf.h object.c rdb.c redis-cli rio.o setproctitle.o syncio.c util.c zmalloc.o
anet.h cluster.h debugmacro.h hyperloglog.c lzfP.h object.o rdb.h redis-cli.c scripting.c sha1.c syncio.o util.h
anet.o cluster.o debug.o hyperloglog.o Makefile pqsort.c rdb.o redis-cli.o scripting.o sha1.h testhelp.h util.o
[root@glon redis]#
[root@glon redis]#
[root@glon redis]# ls /usr/local/bin/
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
[root@glon redis]#
Redis 安装与简单使用的更多相关文章
-
Redis 安装与简单示例
Redis 安装与简单示例 一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或 ...
-
Redis、Redis+sentinel安装(Ubuntu 14.04下Redis安装及简单测试)
Ubuntu下Redis安装两种安装方式: 1.apt-get方式 步骤: 以root权限登录,切换到/usr目录下. 接下来输入命令,apt-get install redis-server,如图: ...
-
Redis安装及简单測试
摘要: Redis是眼下业界很受到欢迎的一个内存数据库,一般用作系统的中间缓存系统,用以提升总体商业系统的吞吐量和响应速度.本文将简要介绍安装的主要过程以及给出一个简要的測试代码. 1. 系统环境和 ...
-
Redis安装与简单配置
一.Redis介绍 1.redis是什么? remote dIctionary server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Redis提 ...
-
【Redis】三、Redis安装及简单示例
(四)Redis安装及使用 Redis的安装比较简单,仍然和大多数的Apache开源软件一样,只需要下载,解压,配置环境变量即可.具体安装过程参考:菜鸟教程Redis安装. 安装完成后,通过r ...
-
redis安装及简单使用
前言 一般企业级开发,数据库用的都是关系型数据库Mysql.Oracle及SqlServer.无一例外,在开发过程中,我们都必须通过数据库驱动来连接到数据库,之后才可以完成对数据库的增删改查等业务.而 ...
-
2.Redis安装和简单使用
(1)安装Redis Redis目前只支持Linux系统,因为开发此软件的创始者认为,Redis是为后台数据服务的,所以认为该软件使用在纯净的服务环境下,而不是应用型操作系统下,而Linux作为服务器 ...
-
redis安装及简单命令
Redis 安装 Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统 ...
-
Redis 安装与简单示例 01_转
一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或者64位.下载解压后图片如下 ...
随机推荐
-
[版本控制之道] Git 常用的命令总结(欢迎收藏备用)
坚持每天学习,坚持每天复习,技术永远学不完,自己永远要前进 总结日常开发生产中常用的Git版本控制命令 ------------------------------main-------------- ...
-
Algorithmic Graph Drawing in TikZ
最近在写模板时需要画个图 ("图论"的"图"). 本来打算用Windows画图 (mspaint) 的, 但是效果不好, 还是决定用LaTeX的TikZ画. 这 ...
-
【POJ】2420 A Star not a Tree?
http://poj.org/problem?id=2420 题意:给n个点,求一个点使得到这个n个点的距离和最短,输出这个最短距离(n<=100) #include <cstdio> ...
-
JVM实用参数——新生代垃圾回收
JVM实用参数目录 JVM实用参数——新生代垃圾回收 概述 第1部分 新生代垃圾回收介绍 第2部分 参数介绍 参考 第1部分 新生代垃圾回收介绍 本部分,我们将关注堆(heap) 中一个主要区域, ...
-
c# 靠谱的bitmap转byte[]
public static byte[] Bitmap2Byte(Bitmap bitmap) { using (MemoryStream stream = new MemoryStream()) { ...
-
HTTP协议(4)
HTTP 概括总结 方便以后使用.遗忘时有侧重点的去学习,方便查阅: 开始看到webservice 和restful 有些不理解 现在可以简单理解为 : webservice = http协议+XM ...
-
h.264并行解码算法分析
并行算法类型可以分为两类 Function-level Decomposition,按照功能模块进行并行 Data-level Decomposition,按照数据划分进行并行 Function-le ...
-
如何保证Redis的高并发
单机的redis几乎不太可能说QPS超过10万+,一般在几万. 除非一些特殊情况,比如你的机器性能特别好,配置特别高,物理机,维护做的特别好,而且你的整体的操作不是太复杂. Redis通过主从架构,实 ...
-
PHP使用Zend Opcache之优化加速和缓存清理总结
简介 字节码缓存不是php的新特性,有很多独立性的扩展可以实现缓存,比如PHP Cache(APC),eAccelerator,ionCube和XCache等等.但是到目前为止,这些独立的扩展并没有集 ...
-
Android开发中需要注意哪些坑
作为一个有两.三年Android应用开发经验的码农,自然会遇到很多坑,下面是我能够想起的一些坑(实践证明不记笔记可不是个好习惯),后面有想到其它坑会陆续补上. 1.在Android library中不 ...