redis和rejson的安装与使用

1.首先上官网下载Redis 压缩包,地址:http://redis.io/download 下载稳定版4.0.即可。

2.下载完成后解压并make

$ tar xzf redis-3.0.1.tar.gz

$ cd redis-3.0.1

$ make

#直接make 编译

sudo make install

===================================

到此安装完成了redis。

3.执行redis-server 可以看到redis服务界面,这是在前台运行的界面

4.通过设置redis.conf 可让redis在后台运行

在文件包下找到redis.conf文件,修改文件配置,将daemonize属性改为yes(表明需要在后台运行)

5.再次启动redis服务,并指定启动服务配置文件

redis-server ./redis.conf服务在后台运行了

6.关闭redis后台运行

redis-server ./redis.conf启动服务端

redis-cli 启动redis客户端

pkill redis-server 关闭redis服务端

redis-cli shutdown 关闭redis客户端

netstat -tunpl|grep 6379 查看redis 默认端口号6379占用情况

==================================

7.redis客户端环境下执行info,查看redis情况

=====================================

8.安装redis可视化工具:

https://java-er.com/blog/redis-tools-windows/

github-doc:http://docs.redisdesktop.com/en/latest/install/#build-from-source

1)git clone --recursive https://github.com/uglide/RedisDesktopManager.git -b 0.9 rdm && cd ./rdm

2)cd src/

3)./configure

4)source /opt/qt59/bin/qt59-env.sh && qmake && make && sudo make install

5)cd /usr/share/redis-desktop-manager/bin

6)sudo mv qt.conf qt.backup

==============================================

9.redis-cli指令:

redis有16个数据库,不可自定义添加

0) 查看keys个数

keys *      // 查看所有keys

keys prefix_*    // 查看前缀为"prefix_"的所有keys

flushdb  // 清除当前数据库的所有keys

flushall    // 清除所有数据库的所有keys

1)对value操作的命令

exists (key):确认一个key是否存在

del (key):删除一个key

type (key):返回值的类型

keys (pattern):返回满足给定pattern的所有key

randomkey:随机返回key空间的一个

keyrename (oldname, newname):重命名key

dbsize :返回当前数据库中key的数目

expire:设定一个key的活动时间(s)

ttl:获得一个key的活动时间

select(index):按索引查询

move (key, dbindex):移动当前数据库中的key到dbindex数据库

flushdb:删除当前选择数据库中的所有key

flushall:删除所有数据库中的所有key

2)String

set (key, value):给数据库中名称为key的string赋予值value

get (key):返回数据库中名称为key的string的value

getset (key, value):给名称为key的string赋予上一次的value

mget (key1, key2,…, key N):返回库中多个string的value

setnx (key, value):添加string,名称为key,值为value

setex (key, time, value):向库中添加string,设定过期时间time

mset (key N, value N):批量设置多个string的值

msetnx (key N, value N):如果所有名称为key i的string都不存在

incr (key):名称为key的string增1操作

incrby (key, integer):名称为key的string增加integer

decr (key):名称为key的string减1操作

decrby (key, integer):名称为key的string减少integer

append (key, value):名称为key的string的值附加value

substr (key, start, end):返回名称为key的string的value的子串

3)List

rpush (key, value):在名称为key的list尾添加一个值为value的元素

lpush (key, value):在名称为key的list头添加一个值为value的 元素

llen (key):返回名称为key的list的长度

lrange (key, start, end):返回名称为key的list中start至end之间的元素

ltrim (key, start, end):截取名称为key的list

lindex (key, index):返回名称为key的list中index位置的元素

lset (key, index, value):给名称为key的list中index位置的元素赋值

lrem (key, count, value):删除count个key的list中值为value的元素

lpop (key):返回并删除名称为key的list中的首元素

rpop (key):返回并删除名称为key的list中的尾元素

blpop (key1, key2,… key N, timeout):lpop命令的block版本。

brpop (key1, key2,… key N, timeout):rpop的block版本。

rpoplpush (srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

4)Set

sadd(key, member):向名称为key的set中添加元素member

srem(key, member) :删除名称为key的set中的元素member

spop(key) :随机返回并删除名称为key的set中一个元素

smove(srckey, dstkey, member) :移到集合元素

scard(key) :返回名称为key的set的基数

sismember(key, member) :member是否是名称为key的set的元素

sinter(key1, key2,…key N) :求交集

sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合

sunion(key1, (keys)) :求并集

sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合

sdiff(key1, (keys)) :求差集

sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合

smembers(key) :返回名称为key的set的所有元素

srandmember(key) :随机返回名称为key的set的一个元素

5)Hash

hset(key, field, value):向名称为key的hash中添加元素field

hget(key, field):返回名称为key的hash中field对应的value

hmget(key, (fields)):返回名称为key的hash中field i对应的value

hmset(key, (fields)):向名称为key的hash中添加元素field

hincrby(key, field, integer):将名称为key的hash中field的value增加integer

hexists(key, field):名称为key的hash中是否存在键为field的域

hdel(key, field):删除名称为key的hash中键为field的域

hlen(key):返回名称为key的hash中元素个数

hkeys(key):返回名称为key的hash中所有键

hvals(key):返回名称为key的hash中所有键对应的value

hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

======================================================================

======================================================================

======================================================================

rejson安装使用:

https://baijiahao.baidu.com/s?id=1572254524357246&wfr=spider&for=pc

1.ReJSON库:git clone https://github.com/RedisLabsModules/rejson.git

2.build-essential 包:apt-get install build-essential

3.rejson文件下make

4.得到编译后的模块库文件在src/rejson.so

5.在redis.conf文件下加载module

loadmodule /path/to/module/rejson.so

用rejson.so文件的真实路径替换上面的这行的/path/to/module/rejson.so

6.重启redis服务端客户端

127.0.0.1:6379> JSON.SET foo . '"bar"'

返回ok则module安装成功

==============================================================

rejson的使用:

127.0.0.1:6379> JSON.SET foo . '"bar"'

OK

127.0.0.1:6379> JSON.GET foo

"\"bar\""

127.0.0.1:6379> JSON.TYPE foo .

string

/////////////////////////////////////////

127.0.0.1:6379> JSON.STRLEN foo .

3

127.0.0.1:6379> JSON.STRAPPEND foo . '"baz"'          //追加字符串

6

127.0.0.1:6379> JSON.GET foo

"\"barbaz\""

/////////////////////////////////////////////

127.0.0.1:6379> JSON.SET num . 0

OK

127.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"

////////////======array, object=========////////////////////////////////

127.0.0.1:6379> JSON.SET amoreinterestingexample . '[ true, { "answer": 42 }, null ]'

OK

127.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]

1

127.0.0.1:6379> JSON.GET amoreinterestingexample

"[true,{\"answer\":42}]"

/////////======array, object=========/////////////

127.0.0.1:6379> JSON.SET arr . []

OK

127.0.0.1:6379> JSON.ARRAPPEND arr . 0

(integer) 1

127.0.0.1:6379> JSON.GET arr

"[0]"

127.0.0.1:6379> JSON.ARRINSERT arr . 0 -2 -1    //从左向右数第0个位置开始追加-2和-1

(integer) 3

127.0.0.1:6379> JSON.GET arr

"[-2,-1,0]"

127.0.0.1:6379> JSON.ARRTRIM arr . 1 2        //从左向右数第一个位置开始保存两个数字,其余删除

2

127.0.0.1:6379> JSON.GET arr

"[-1,0]"

127.0.0.1:6379> JSON.ARRPOP arr              //从右向左返回第一个数字并删除

"0"

127.0.0.1:6379> JSON.ARRPOP arr

"-1"

127.0.0.1:6379> JSON.ARRPOP arr

(nil)

/////////======array, object=========/////////////

127.0.0.1:6379> JSON.SET obj . '{"name":"Leonard Cohen","lastSeen":1478476800,"loggedOut": true}'

OK

127.0.0.1:6379> JSON.OBJLEN obj .

(integer) 3

127.0.0.1:6379> JSON.OBJKEYS obj .

1) "name"

2) "lastSeen"

3) "loggedOut"


************************************************

************************************************

第三方插件redis-rejson对应的rejson的支持的指令操作,所有的‘.’均替换为‘_’,如json.get替换为json_get

"json.del key",删除key

"json.get key",获取key的value

"json.mget", Returns the values at path from multiple keys.

"json.set key . value",插入数据

"json.type key .xxx",返回xxx类型

"json.numincrby key . num",加法

"json.nummultby key . num", 乘法

"json.strappend key . string",追加字符串

"json.strlen key .xxx",返回xxx长度

"json.arrappend key . 1",向数组里插入内容

"json.arrindex", Search for the first occurrence of a scalar JSON value in an array.

"json.arrinsert", 数组追加

"json.arrlen", 数组长度

"json.arrpop", 数组删除

"json.arrtrim", 数组删除

"json.objkeys key .",返回对象key的所有key

"json.objlen key .",返回对象key的key数量

"json.debug",

"json.forget",

"json.resp"

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • nginx提供了$upstream_cache_status这个变量来显示缓存的状态,我们可以在配置中添加一个ht...
    FMD彩虹阅读 3,415评论 0 1
  • 作者:佚名 什么是青梅竹马呢,其实根本没有别人所想的那么浪漫。所谓青梅竹马只是那个知道你所有丑事和本来面目的人。即...
    a紅霞Li阅读 289评论 0 1
  • 今日观点: 第一,愿景:画面感越强,越能激发憧憬。 思考:愿景,就是梦想,是激励企业或个人保持永久动力的根本,若一...
    杨雪雪阅读 312评论 0 0
  • 一生中你会遇到多少人,与多少人擦肩,与多少人话聊,又有多少人为你深夜留盏昏灯等你回家,伸出手来十个指头都数的清...
    夕嘢阅读 182评论 0 0