Redis

简介

优势:分布式;基于键值对;

传统关系处理:RDBMS;

Redis源码:https://github.com/redis/redis

Redis在线测试:https://try.redis.io

Redis命令:http://doc.redisfans.com

奇数为非稳定版本;偶数为稳定版本

Redis Functions 新特性

安装

安装步骤:

yum -y install gcc-c++

tar -xzvf XXXX -C /opt

make && makr install

默认安装 :/usr/local/bin

修改redis.conf

后端进程:

daemonize no --> daemonize yes

保护模式:

protected-mode yes --> protected-mode no

远程:

bind 127.0.0.1 -::1 注释

设置redis密码:

requirepass 111111

启动redis:

redis-server myredis/redis7.conf

查看端口号:

ps -ef|grep redis|grep -v grep

启动redis-cli:

redis-cli -a 密码 -p 6379(端口号 ,若不写则默认6379)

查看是否启动成功:

ping 命令

标准错误:

Warning: Using a password with ‘-a’ or ‘-u’ option on the command line interface may not be safe.

解决:redis-cli -a 密码 -p 6379 2>/dev/null(端口号 ,若不写则默认6379)

关闭Redis服务

单实例关闭:redis-cli -a 密码 shutdown

多实例关闭,指定端口关闭:redis-cli -p 6379 shutdown

DataType

string 类型:字符串类型(512MB);

list类型 :字符串列表,顺序排列,2^32-1个元素(不超过40亿);

Hash类型:string类型的filed和value的映射表,2^32-1个键值对(不超过40亿);

Set类型:无序集合,唯一的;通过hash表实现;

Zset类型(有序集合):string类型;每个元素会关联一个double类型的分数,成员唯一,但分数(score)可以重复;

GEO类型(地理位置):

HyperLogLOg(基数统计):基数统计的算法

bitmap(位图):

bitfiled(域图):比特位域

stream(流):用于消息队列

命令面板:中文:http://www.redis.cn/commands.html

​ 英文:https://redis.io/commands

命令:

命令 含义
set kye value 创建k-v
get key 去除v
keys * 查看所有
EXISTS k1 判断是否存在
type key 查看key类型
del key 删除key
unline key 非阻塞删除
ttl key 查看还有多久过期 -1永不过期 -2 已经超时
expire key 秒钟 设置key多久过期
move key dbindex 将当前数据库key移动到指定db中
select dbindex 切换库(0-15)
dbsize 查看当前数据库key数量
flushdb 清空当前库
flushall 清空所有库

string类型命令:

1
2
SET key value [NX | XX] [GET] [EX 秒 | PX 毫秒 |
EXAT unix 时间秒 | PXAT unix 时间毫秒 | 保持]
  • EX seconds — 设置指定的过期时间,以秒为单位。
  • PX milliseconds — 设置指定的过期时间,以毫秒为单位。
  • EXAT timestamp-seconds — 设置密钥过期的指定 Unix 时间,以秒为单位。
  • PXAT timestamp-milliseconds — 设置密钥过期的指定 Unix 时间,以毫秒为单位。
  • NX— 仅在密钥不存在时设置密钥。
  • XX— 仅在密钥已存在时才设置密钥。
  • KEEPTTL— 保留与密钥关联的生存时间。
  • GET— 返回存储在 key 中的旧字符串,如果 key 不存在则返回 nil。SET如果存储在 key 中的值不是字符串,则返回错误并中止。

多个插入:

1
2
mset k1 v1 k2 v2 
mget k1 k2

获取指定区间值:

1
2
3
4
#截取0-1
getrange key 0 1
#从0开始覆盖aaa
setrange key 0 aaa

数值增减

1
2
3
4
5
6
7
8
#递增
incr key
#增加指定数值
incrby key 10
#递减数值
decr key
#递减指定数值
decrby key 10

获取长度内容和追加

1
2
strlen key
append key value

分式锁

1
2
setnx key value
setex(set with expire)键秒值/setnx(set if not exist)
1
getset

list类型命令

1
2
3
4
5
6
7
8
9
10
11
lpush list
rpush list
lrange list
lpop list 弹出
ropo list
lindex list 按照索引下标获取元素
llen list 获取元素个数
lrem key 3 1 删除31
ltrim key 0 1 截取指定范围(0-1)赋值key
rpoplpush 源列表添加到目标列表
linsert key before/after 已有值 插入新的值

Hash常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
HDEL key field1 [field2]
#删除一个或多个哈希表字段
HEXISTS key field
#查看哈希表 key 中,指定的字段是否存在。
HGET key field
#获取存储在哈希表中指定字段的值。
HGETALL key
#获取在哈希表中指定 key 的所有字段和值
HINCRBY key field increment
#为哈希表 key 中的指定字段的整数值加上增量 increment 。
HINCRBYFLOAT key field increment
#为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
HKEYS key
#获取哈希表中的所有字段
HLEN key
#获取哈希表中字段的数量
HMGET key field1 [field2]
#获取所有给定字段的值
HMSET key field1 value1 [field2 value2 ]
#同时将多个 field-value (域-值)对设置到哈希表 key 中。
HSET key field value
#将哈希表 key 中的字段 field 的值设为 value 。
HSETNX key field value
#只有在字段 field 不存在时,设置哈希表字段的值。
HVALS key
#获取哈希表中所有值。
HSCAN key cursor [MATCH pattern] [COUNT count]
#迭代哈希表中的键值对。

set命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
SADD key member1 [member2]
#向集合添加一个或多个成员
SCARD key
#获取集合的成员数
SDIFF key1 [key2]
#返回第一个集合与其他集合之间的差异。
SDIFFSTORE destination key1 [key2]
#返回给定所有集合的差集并存储在 destination 中
SINTER key1 [key2]
#返回给定所有集合的交集
SINTERSTORE destination key1 [key2]
#返回给定所有集合的交集并存储在 destination 中
SISMEMBER key member
#判断 member 元素是否是集合 key 的成员
SMEMBERS key
#返回集合中的所有成员
SMOVE source destination member
#将 member 元素从 source 集合移动到 destination 集合
SPOP key
#移除并返回集合中的一个随机元素
SRANDMEMBER key [count]
#返回集合中一个或多个随机数
SREM key member1 [member2]
#移除集合中一个或多个成员
SUNION key1 [key2]
#返回所有给定集合的并集
SUNIONSTORE destination key1 [key2]
#所有给定集合的并集存储在 destination 集合中
SSCAN key cursor [MATCH pattern] [COUNT count]
#迭代集合中的元素

zset基础命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
ZINCRBY key increment member
#有序集合中对指定成员的分数加上增量 increment
ZINTERSTORE destination numkeys key [key ...]
#计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 destination 中
ZLEXCOUNT key min max
#在有序集合中计算指定字典区间内成员数量
ZRANGE key start stop [WITHSCORES]
#通过索引区间返回有序集合指定区间内的成员
ZRANGEBYLEX key min max [LIMIT offset count]
#通过字典区间返回有序集合的成员
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
#通过分数返回有序集合指定区间内的成员
ZRANK key member
#返回有序集合中指定成员的索引
ZREM key member [member ...]
#移除有序集合中的一个或多个成员
ZREMRANGEBYLEX key min max
#移除有序集合中给定的字典区间的所有成员
ZREMRANGEBYRANK key start stop
#移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYSCORE key min max
#移除有序集合中给定的分数区间的所有成员
ZREVRANGE key start stop [WITHSCORES]
#返回有序集中指定区间内的成员,通过索引,分数从高到低
ZREVRANGEBYSCORE key max min [WITHSCORES]
#返回有序集中指定分数区间内的成员,分数从高到低排序
ZREVRANK key member
#返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
ZSCORE key member
#返回有序集中,成员的分数值
ZUNIONSTORE destination numkeys key [key ...]
#计算给定的一个或多个有序集的并集,并存储在新的 key 中
ZSCAN key cursor [MATCH pattern] [COUNT count]
#迭代有序集合中的元素(包括元素成员和元素分值)