Redis
概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。
运行环境
centos7.0
两个虚拟机,一台克隆机。
各自安装了docker redis
启动了docker redis
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
362e38a62c99 redis:5.0 "docker-entrypoint.s…" 2 weeks ago Up 5 seconds 0.0.0.0:6379->6379/tcp c_redis
借此启动两台docker redis服务器,使用RedisDesktopManager软件作为客户端。
key-value中间有一个field作为存储名
类似于key:hash值,field:名字,value:存储数据
string 类型
string 类型数据的基本操作
添加/修改数据
set key value
获取数据
get key
删除数据
del key
判定性添加数据
setnx key value
例子:
c_redis:0>set name hikktn
"OK"
c_redis:0>get name
"hikktn"
c_redis:0>del name
"1"
c_redis:0>get name
null
c_redis:0>setnx user root
"1"
c_redis:0>get user
"root"
添加/修改多个数据
mset key1 value1 key2 value2 …
获取多个数据
mget key1 key2 …
获取数据字符个数(字符串长度)
strlen key
追加信息到原始信息后部(如果原始信息存在就追加,否则新建)
append key value
例子:
c_redis:0>mset name1 tom name2 shu
"OK"
c_redis:0>mget name1 name2
1) "tom"
2) "shu"
c_redis:0>strlen name1 name2
"ERR wrong number of arguments for 'strlen' command"
c_redis:0>strlen name1
"3"
c_redis:0>append name2 su
"5"
c_redis:0>mget name1 name2
1) "tom"
2) "shusu"
string 类型数据的扩展操作
设置数值数据增加指定范围的值
incr key
# 自增入力值
incrby key increment
# 自增浮点入力值
incrbyfloat key increment
设置数值数据减少指定范围的值
decr key
# 自减入力值
decrby key increment
设置数据具有指定的生命周期
# 设置几秒后失效
setex key seconds value
#设置几毫秒钟失效
psetex key milliseconds value
例子:
incr key和decr key(自增和自减,+1和-1)
c_redis:0>set ace 5
"OK"
c_redis:0>incr ace
"6"
c_redis:0>get ace
"6"
c_redis:0>decr ace
"5"
incrby key increment和decrby key increment (自增入力值和自减入力值)
c_redis:0>get ace
null
c_redis:0>incrby ace 9
"9"
c_redis:0>incrby ace 10.0
"ERR value is not an integer or out of range"
c_redis:0>incrby ace 100
"109"
c_redis:0>get ace
"109"
c_redis:0>decrby ace 2
"107"
incrbyfloat key increment(自增浮点数)
c_redis:0>incrbyfloat aoc 10.2
"10.2"
c_redis:0>decrbyfloat aoc 0.2
"ERR unknown command `decrbyfloat`, with args beginning with: `aoc`, `0.2`, "
c_redis:0>get aoc
"10.2"
setex key seconds value(在10秒钟内失效)
c_redis:0>setex ace 10 109
"OK"
c_redis:0>get ace
"109"
c_redis:0>get ace
null
psetex key milliseconds value (在5秒钟【毫秒】内失效)
c_redis:0>set ace 100
"OK"
c_redis:0>psetex ace 5000 100
"OK"
c_redis:0>get ace
"100"
c_redis:0>get ace
null
应用场景
关注,粉丝,博客
比如我的博客现在又55篇原创,那么key的命名方式,
表名 主键名 主键值 字段名<br />eg1 order id 254858751 user<br />eg2 fans id 5421884431 type<br />eg3 blog id 5459982214 txt<br /> 举例:
博主昵称:hikktn,粉丝数:59; →→→→ hikktn:id:1213457107:fans →→→→ 59
博主昵称:hikktn,博客数:55; →→→→ hikktn:id:1213457107:blog →→→→ 55
博主昵称:hikktn,点赞数:62; →→→→ hikktn:id:1213457107:fabulous →→→→ 62
另一种方式(JSON):
hikktn:id:1213457108 →→→→ {"fans" : 59 , "blog" : 55 , "fabulous" : 62 }
c_redis:0>set hikktn:id:1213457107:fans 59
"OK"
c_redis:0>set hikktn:id:1213457107:blog 55
"OK"
c_redis:0>set hikktn:id:1213457107:fabulous 62
"OK"
c_redis:0>set hikktn:id:1213457108 {\"fans\":59,\"blog\":55,\"fabulous\":62}
"OK"
c_redis:0>get hikktn:id:1213457108
"{"fans":59,"blog":55,"fabulous":62}"