安装 Redis

一般系统都会有软件管理工具,但是通常版本都不会太新,况且 Redis 的安装很简单,因此下面使用源码的安装方式。

  1. 下载源码 wget http://download.redis.io/releases/redis-3.2.8.tar.gz
  2. 解压 tar -zxf redis-3.2.8.tar.gz
  3. 创建软连接 ln -s redis-3.2.8 redis
  4. 进入 redis 目录 cd redis
  5. 编译 make
  6. 安装 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 安装与简单使用的更多相关文章

  1. Redis 安装与简单示例

    Redis 安装与简单示例 一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或 ...

  2. Redis、Redis+sentinel安装(Ubuntu 14.04下Redis安装及简单测试)

    Ubuntu下Redis安装两种安装方式: 1.apt-get方式 步骤: 以root权限登录,切换到/usr目录下. 接下来输入命令,apt-get install redis-server,如图: ...

  3. Redis安装及简单測试

    摘要: Redis是眼下业界很受到欢迎的一个内存数据库,一般用作系统的中间缓存系统,用以提升总体商业系统的吞吐量和响应速度.本文将简要介绍安装的主要过程以及给出一个简要的測试代码. 1.  系统环境和 ...

  4. Redis安装与简单配置

    一.Redis介绍 1.redis是什么? remote dIctionary server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Redis提 ...

  5. 【Redis】三、Redis安装及简单示例

    (四)Redis安装及使用   Redis的安装比较简单,仍然和大多数的Apache开源软件一样,只需要下载,解压,配置环境变量即可.具体安装过程参考:菜鸟教程Redis安装.   安装完成后,通过r ...

  6. redis安装及简单使用

    前言 一般企业级开发,数据库用的都是关系型数据库Mysql.Oracle及SqlServer.无一例外,在开发过程中,我们都必须通过数据库驱动来连接到数据库,之后才可以完成对数据库的增删改查等业务.而 ...

  7. 2.Redis安装和简单使用

    (1)安装Redis Redis目前只支持Linux系统,因为开发此软件的创始者认为,Redis是为后台数据服务的,所以认为该软件使用在纯净的服务环境下,而不是应用型操作系统下,而Linux作为服务器 ...

  8. redis安装及简单命令

    Redis 安装 Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统 ...

  9. Redis 安装与简单示例 01_转

    一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或者64位.下载解压后图片如下 ...

随机推荐

  1. 我用Cocos2d-x模拟《Love Live!学院偶像祭》的Live场景(一)

    同样从CSDN搬过来 博客开这么久了,就发过一篇很水的文章,一直想写点正式的东西.这次准备开工一个仿其他游戏的简单小游戏,于是开博客把开发过程记录下来.这一系列文章主要讲,我是如何从零开始使用Coco ...

  2. swift中标签的使用

    1,标签的创建 1 2 3 4 5 6 7 8 9 10 import UIKit class ViewController: UIViewController {     override func ...

  3. SVG的a链接

    SVG的a链接: <%@ page language="java" contentType="text/html; charset=UTF-8" page ...

  4. 第一部分 代码组织概念,集成开发环境(IDE)

    代码组织概念 主要是代码文件,项目和解决方案. 解决方案(.sln)包含多个项目(.csproj),一个项目又包含多个文件(.cs). 集成开发环境(IDE): 由编辑.编译.调试,以及用户图形界面, ...

  5. windows服务用脚本无法启动

    1.创建windows服务工程 工程名:ServiceDemo 2.添加加载启动及卸载服务脚本 加载及启动批处理: @echo off if exist "%SystemRoot%/Micr ...

  6. 【原创】梵高油画用深度卷积神经网络迭代十万次是什么效果? A neural style of convolutional neural networks

    作为一个脱离了低级趣味的码农,春节假期闲来无事,决定做一些有意思的事情打发时间,碰巧看到这篇论文: A neural style of convolutional neural networks,译作 ...

  7. MVC无刷新查询,PagedList分页控件使用,导出Excel

    使用MVC开发也有一段时间了,总结下无刷新部分视图的使用.PagedList分页控件的使用. @using PagedList @model StaticPagedList<T> < ...

  8. mybatis入门-mapper代理原理

    原始dao层开发 在我们用mybatis开发了第一个小程序后,相信大家对于dao层的开发其实已经有了一个大概的思路了.其他的配置不用变,将原来的test方法,该为dao的方法,将原来的返回值,直接在d ...

  9. Unity与Android间的交互

    1.打开Android Studio,命名并自动生成包名 2.点击Next,设置最小支持的SDK 3.点击Next,选择Empty Activity 4.点击Next,默认就行不用管 5.Finish ...

  10. SQL SPLIT2

    CREATE   FUNCTION  F_SQLSERVER_SPLIT( @Long_str   varchar ( 8000 ), @split_str   varchar ( 100 ))    ...