Redis支持json数据类型 | rejson

Redis支持json数据类型 | rejson

Redis支持json数据类型(EN)

Redis支持json数据类型(CH)

ReJSON介绍ReJSON 是一个Redis Module,它实现了ECMA-404 The JSON Data Interchange Standard作为本地数据类型,它允许从Redis Keys(documents)中存储,更新和获取JSON值主要特性:完全支持JSON标准对于在文档内选择元素类似JSONPath语法文档作为二进制数据被存储在一个树形结构中,允许快速访问子元素对所有JSON数据类型按照原子操作进行分类ReJSON是有Redis Labs开发的,源码下载地址是https://github.com/RedisLabsModules/ReJSON
# centosyum install gcc gcc-c++ automake autoconf libtool# ubuntusudo apt-get install make libtool gcc autoconf #mkdir -p /usr/local/redis/{bin,etc,db,log,modules}#git clone https://github.com/RedisLabsModules/ReJSONcd  ReJSONmakecp src/rejson.so /usr/local/redis/modules/#wget --no-check-certificate https://github.com/antirez/redis/archive/4.0-rc3.tar.gztar -zxvf 4.0-rc3.tar.gzcd redis-4.0-rc3makecd src && cp -a redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server  /usr/local/redis/bin/cd ..  && cp redis.conf  /usr/local/redis/etc/6379.confsed -i "s#dir ./#dir /usr/local/redis/db/#" /usr/local/redis/etc/6379.confsed -i "s/^# bind 127.0.0.1/bind 127.0.0.1/" /usr/local/redis/etc/6379.confsed -i "s/daemonize no/daemonize yes/" /usr/local/redis/etc/6379.confsed -i 's#logfile ""#logfile "/usr/local/redis/log/6379.log"#' /usr/local/redis/etc/6379.confecho -e 'export REDIS_HOME=/usr/local/redisexport PATH=$REDIS_HOME/bin:$PATH' >>/etc/profile && source /etc/profile#加载rejson.so到redis,依赖:Redis V4.0 或更高版本#通过配置文件加载module(推荐):sed -i '44aloadmodule /usr/local/redis/modules/rejson.so' /usr/local/redis/etc/6379.conf#通过命令行加载module(不推荐):/usr/local/redis/bin/redis-server --loadmodule /usr/local/redis/modules/rejson.so#注意,"--loadmodule"比较危险,将来出于安全考虑可能会被禁用或取消#启动redis进程/usr/local/redis/bin/redis-server /usr/local/redis/etc/6379.conf#/usr/local/redis/bin/redis-cli127.0.0.1:6379> set hao 123OK127.0.0.1:6379> get hao"123"#/usr/local/redis/bin/redis-cli127.0.0.1:6379> JSON.SET foo . '"bar"'OK127.0.0.1:6379> JSON.GET foo""bar""127.0.0.1:6379> JSON.TYPE foo .string127.0.0.1:6379> JSON.SET num . 0OK127.0.0.1:6379> JSON.NUMINCRBY num . 1"1"127.0.0.1:6379> JSON.NUMINCRBY num . 1.5"2.5"127.0.0.1:6379> JSON.NUMINCRBY num . -0.75"1.75"127.0.0.1:6379> JSON.NUMMULTBY num . 24"42"127.0.0.1:6379> JSON.SET amoreinterestingexample . '[ true, { "answer": 42 }, null ]'OK127.0.0.1:6379> JSON.GET amoreinterestingexample"[true,{"answer":42},null]"127.0.0.1:6379> JSON.GET amoreinterestingexample [1].answer"42"127.0.0.1:6379>  JSON.DEL amoreinterestingexample [-1](integer) 1127.0.0.1:6379> JSON.GET amoreinterestingexample"[true,{"answer":42}]"127.0.0.1:6379>  JSON.SET arr . []OK127.0.0.1:6379> JSON.ARRAPPEND arr . 0(integer) 1127.0.0.1:6379> JSON.GET arr"[0]"127.0.0.1:6379> JSON.ARRINSERT arr . 0 -2 -1(integer) 3127.0.0.1:6379> JSON.GET arr"[-2,-1,0]"127.0.0.1:6379> JSON.ARRTRIM arr . 1 1(integer) 1127.0.0.1:6379> JSON.GET arr"[-1]"127.0.0.1:6379> JSON.ARRPOP arr"-1"127.0.0.1:6379> JSON.ARRPOP arr(nil)127.0.0.1:6379> JSON.SET obj . '{"name":"Leonard Cohen","lastSeen":1478476800,"loggedOut": true}'OK127.0.0.1:6379> JSON.OBJLEN obj (integer) 3127.0.0.1:6379> JSON.OBJKEYS obj .1) "name"2) "lastSeen"3) "loggedOut"################/etc/init.d/redis#! /bin/bash#   # redis - this script starts and stops the redis-server daemon#   # chkconfig:    2345 80 90# description:  Redis is a persistent key-value database#   ### BEGIN INIT INFO# Provides:          redis# Required-Start:    $syslog# Required-Stop:     $syslog# Should-Start:        $local_fs# Should-Stop:        $local_fs# Default-Start:     2 3 4 5# Default-Stop:      0 1 6# Short-Description:    redis-server daemon# Description:        redis-server daemon### END INIT INFOREDISPORT=6379EXEC=/usr/local/redis/bin/redis-serverREDIS_CLI=/usr/local/redis/bin/redis-cli   PIDFILE=/var/run/redis_${REDISPORT}.pidCONF="/usr/local/redis/etc/${REDISPORT}.conf"   case "$1" in    start)        if [ -f $PIDFILE ]; then                echo "$PIDFILE exists, process is already running or crashed"        else                echo -n "Starting Redis server..."                $EXEC $CONF                if [ "$?"="0" ]; then                    echo " done"                else                    echo " failed"                fi        fi        ;;    stop)        if [ ! -f $PIDFILE ]; then                echo "$PIDFILE does not exist, process is not running"        else                PID=$(cat $PIDFILE)                echo "Stopping  Redis server..."                $REDIS_CLI -p $REDISPORT shutdown                if [ "$?"="0" ]; then                    echo " done"                else                    echo " failed"                fi        fi        ;;   restart)        ${0} stop        ${0} start        ;;  *)    echo "Usage: /etc/init.d/redis {start|stop|restart}" >&2        exit 1esac#centoschmod +x /etc/init.d/redis/etc/init.d/redis startchkconfig add redis#ubuntuchmod +x /etc/init.d/redis/etc/init.d/redis startupdate-rc.d redis defalutsapt-get install sysv-rc-conf -ysysv-rc-conf修改启动级别#tail -f /usr/local/redis/log/6379.log......15578:M 08 Jul 16:28:37.503 # <ReJSON> JSON data type for Redis v999.999.999 [encver 0]15578:M 08 Jul 16:28:37.504 * Module 'ReJSON' loaded from /usr/local/redis/modules/rejson.so......
对ReJSON的命令提供客户端库支持的一些语言:Project(Language)(License)(Author -- Link)#iorejson     (Node.js)(MIT)(Evan Huang @evanhuang8 -- https://github.com/evanhuang8)git:https://github.com/evanhuang8/iorejsonnpm:https://www.npmjs.com/package/iorejson#JReJSON(Java)(BSD-2-Clause)(Redis Labs -- https://redislabs.com/)git:https://github.com/RedisLabs/JReJSON/#rejson-py(Python)(BSD-2-Clause)(Redis Labs -- https://redislabs.com/)git:https://github.com/RedisLabs/redis-py/pypi:https://pypi.python.org/pypi/rejson

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部