因为业务需求,需要用到redis存储一点简单的数据,因为redis有良好的哈希机制,可以完美实现我的某些需求,但openwrt官方提供memcached的ipk并没有提供redis,没办法,只能自己编译了,编译的redis版本3.2.1
1.下载redis:http://download.redis.io/releases/redis-3.2.1.tar.gz
2.在openwrt-widora的package目录下创建redis目录,把解压出来的redis目录mv到此目录下,改名为src,在平级目录(openwrt-widora的package下刚刚创建的redis目录)下创建Makefile
0_1509552860645_3f18cebe-c2d9-4cea-9ad7-6215dc231194-image.png
内容如下:

  1. include $(TOPDIR)/rules.mk
  2. # Name and release number of this package
  3. PKG_NAME:=redis
  4. PKG_RELEASE:=1
  5. PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
  6. PKG_KCONFIG:=RALINK_MT7620 RALINK_MT7628
  7. include $(INCLUDE_DIR)/package.mk
  8. include $(INCLUDE_DIR)/kernel.mk
  9. define Package/redis
  10. SECTION:=Diy pack
  11. CATEGORY:=Diy pack
  12. TITLE:=redis
  13. DEPENDS:= +libpthread
  14. endef
  15. # Uncomment portion below for Kamikaze and delete DESCRIPTION variable above
  16. define Package/redis/description
  17. redis for server
  18. endef
  19. # Specify what needs to be done to prepare for building the package.
  20. # In our case, we need to copy the source files to the build directory.
  21. # This is NOT the default. The default uses the PKG_SOURCE_URL and the
  22. # PKG_SOURCE which is not defined here to download the source from the web.
  23. # In order to just build a simple program that we have just written, it is
  24. # much easier to do it this way.
  25. define Build/Prepare
  26. mkdir -p $(PKG_BUILD_DIR)
  27. $(CP) ./src/* $(PKG_BUILD_DIR)/
  28. endef
  29. # We do not need to define Build/Configure or Build/Compile directives
  30. # The defaults are appropriate for compiling a simple program such as this one
  31. $(foreach c, $(PKG_KCONFIG),$(if $(CONFIG_$c),-DCONFIG_$(c)=$(CONFIG_$c)))
  32. define Build/Compile
  33. $(MAKE) MALLOC=libc -C $(PKG_BUILD_DIR) \
  34. $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -I$(LINUX_DIR)/include"
  35. endef
  36. # Specify where and how to install the program. Since we only have one file,
  37. # the helloworld executable, install it by copying it to the /bin directory on
  38. # the router. The $(1) variable represents the root directory on the router running
  39. # OpenWrt. The $(INSTALL_DIR) variable contains a command to prepare the install
  40. # directory if it does not already exist. Likewise $(INSTALL_BIN) contains the
  41. # command to copy the binary file from its current location (in our case the build
  42. # directory) to the install directory.
  43. #$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/redis-server $(1)/bin/
  44. define Package/redis/install
  45. $(INSTALL_DIR) $(1)/bin
  46. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/redis-server $(1)/bin/(如果是需要客户端则为$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/redis-cli $(1)/bin/
  47. endef
  48. # This line executes the necessary commands to compile our program.
  49. # The above define directives specify all the information needed, but this
  50. # line calls BuildPackage which in turn actually uses this information to
  51. # build a package.
  52. $(eval $(call BuildPackage,redis))

 

——————-****************************** Makefile end *******************************************
修改src里的src下的config.h文件(也就是redis目录下的config.h文件)
vim src/src/config.h
把#define HAVE_BACKTRACE 1 注掉 ,如下图
0_1509552601835_eff02f79-8a9b-43b1-a11c-e05db7fc98f2-image.png
然后回到widora 的sdk目录下,make menuconfig,找到Diy pack进入,选择redis(如果是ipk则标注为M,如果编译进固件则是*)
然后正常make -j4 如果一切顺利的话,在sdk的bin/ramips/packages/base/中可以找到前缀为redis的ipk文件
将对应ipk下载下来上传到neo或bit3、bit4中,opkg install redis_xxx.ipk即可
0_1509552513708_75290fea-eeb4-4ee5-aebf-7a1eeafa991b-image.png
创建redis.conf文件,内容如下

  1. bind 127.0.0.1
  2. protected-mode yes
  3. port 6379
  4. tcp-backlog 511
  5. timeout 0
  6. tcp-keepalive 300
  7. daemonize yes
  8. supervised no
  9. pidfile /tmp/redis_6379.pid
  10. loglevel notice
  11. logfile ""
  12. databases 16
  13. save 900 1
  14. save 300 10
  15. save 60 10000
  16. stop-writes-on-bgsave-error yes
  17. rdbcompression yes
  18. rdbchecksum yes
  19. dbfilename dump.rdb
  20. dir ./
  21. slave-serve-stale-data yes
  22. slave-read-only yes
  23. repl-diskless-sync no
  24. repl-diskless-sync-delay 5
  25. repl-disable-tcp-nodelay no
  26. slave-priority 100
  27. appendonly no
  28. appendfilename "appendonly.aof"
  29. appendfsync everysec
  30. no-appendfsync-on-rewrite no
  31. auto-aof-rewrite-percentage 100
  32. auto-aof-rewrite-min-size 64mb
  33. aof-load-truncated yes
  34. lua-time-limit 5000
  35. slowlog-log-slower-than 10000
  36. slowlog-max-len 128
  37. latency-monitor-threshold 0
  38. notify-keyspace-events ""
  39. hash-max-ziplist-entries 512
  40. hash-max-ziplist-value 64
  41. list-max-ziplist-size -2
  42. list-compress-depth 0
  43. set-max-intset-entries 512
  44. zset-max-ziplist-entries 128
  45. zset-max-ziplist-value 64
  46. hll-sparse-max-bytes 3000
  47. activerehashing yes
  48. client-output-buffer-limit normal 0 0 0
  49. client-output-buffer-limit slave 256mb 64mb 60
  50. client-output-buffer-limit pubsub 32mb 8mb 60
  51. hz 10
  52. aof-rewrite-incremental-fsync yes

 

然后 redis-server 您的路径/redis.conf 启动redis
运行效果
0_1509552488285_5f5d4d75-006d-493f-a90e-ec2798e76c0b-image.png
客户端(客户端编译需要的包为redis-cli,Makefile要对应修改一下,上边我给出的Makefile有注释这部分)实测连接:
0_1509552466313_8b88b5a9-b4ad-46c1-9f3b-5d4d253e043c-image.png
ok,完工

版权声明:本文为langzixiaoxin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/langzixiaoxin/p/8933343.html