Because of business needs, I need to use redis to store some simple data, because redis has a good hashing mechanism, which can perfectly meet some of my needs, but the ipk officially provided by openwrt memcached does not provide redis, there is no way, only myself Compiled, compiled redis version 3.2.1
1. Download redis: http://download.redis.io/releases/redis-3.2.1.tar.gz
2. Create a redis directory in the package directory of openwrt-widora, Put the decompressed redis directory mv into this directory, rename it to src, and create a Makefile in the flat directory (the redis directory just created under the openwrt-widora package)
The content is as follows:
include $(TOPDIR)/rules.mk # Name and release number of this package PKG_NAME:=redis PKG_RELEASE:=1 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) PKG_KCONFIG:=RALINK_MT7620 RALINK_MT7628 include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/kernel.mk define Package/redis SECTION:=Diy pack CATEGORY:=Diy pack TITLE:=redis DEPENDS:= +libpthread endef # Uncomment portion below for Kamikaze and delete DESCRIPTION variable above define Package/redis/description redis for server endef # Specify what needs to be done to prepare for building the package. # In our case, we need to copy the source files to the build directory. # This is NOT the default. The default uses the PKG_SOURCE_URL and the # PKG_SOURCE which is not defined here to download the source from the web. # In order to just build a simple program that we have just written, it is # much easier to do it this way. define Build/Prepare mkdir -p $(PKG_BUILD_DIR) $(CP) ./src/* $(PKG_BUILD_DIR)/ endef # We do not need to define Build/Configure or Build/Compile directives # The defaults are appropriate for compiling a simple program such as this one $(foreach c, $(PKG_KCONFIG),$(if $(CONFIG_$c),-DCONFIG_$(c)=$(CONFIG_$c))) define Build/Compile $(MAKE) MALLOC=libc -C $(PKG_BUILD_DIR) \ $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -I$(LINUX_DIR)/include" endef # Specify where and how to install the program. Since we only have one file, # the helloworld executable, install it by copying it to the /bin directory on # the router. The $(1) variable represents the root directory on the router running # OpenWrt. The $(INSTALL_DIR) variable contains a command to prepare the install # directory if it does not already exist. Likewise $(INSTALL_BIN) contains the # command to copy the binary file from its current location (in our case the build # directory) to the install directory. #$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/redis-server $(1)/bin/ define Package/redis/install $(INSTALL_DIR) $(1)/bin $(INSTALL_BIN) $(PKG_BUILD_DIR) /src/redis-server $( 1 )/bin/ ($(INSTALL_BIN) $(PKG_BUILD_DIR)/src/redis-cli $( 1 )/bin/ ) endef # This line executes the necessary commands to compile our program. # The above define directives specify all the information needed, but this # line calls BuildPackage which in turn actually uses this information to # build a package. $(eval $(call BuildPackage,redis))
-------------------******************************** Makefile end ********************************************
Modify src in src The config.h file (that is, the config.h file in the redis directory)
vim src/src/config.h
Note out #define HAVE_BACKTRACE 1, as shown below
Then go back to widora's sdk directory, make menuconfig, find Diy pack to enter, select redis (if it is ipk, mark it as M, if it is compiled into firmware, it is *)
and then make -j4 normally. If everything goes well, in the bin of sdk The ipk file prefixed with redis can be found in /ramips/packages/base/,
download the corresponding ipk and upload it to neo or bit3, bit4, opkg install redis_xxx.ipk
Create a redis.conf file with the following content
bind 127.0.0.1 protected-mode yes port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 300 daemonize yes supervised no pidfile /tmp/redis_6379.pid loglevel notice logfile "" databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir ./ slave-serve-stale-data yes slave-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no slave-priority 100 appendonly no appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes
Then redis-server your path/redis.conf to start redis
running effect
Client (the package required for client compilation is redis-cli, and the Makefile should be modified accordingly. The Makefile I gave above has a comment section) Measured connection:
ok, done