目录
什么是 Redis?
Redis是一个用C语言编写的、开源的、基于内存运行并支持持久化的 key-value、非关系型、NoSQL数据库。
Redis中的数据大部分时间都是存储内存中的,适合存储频繁访问、数据量比较小的数据。
核心
1、cache(主要用来做缓存,例如热点数据,或实时淘汰的数据)
2、store(全量性)
Redis 特点
- 速度快,基于内存进行处理数据
- 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
- 支持 String,list,set,zset,hash 等数据结构的存储
- 支持数据的备份,即 master-slave 模式的数据备份
- 功能丰富。除了支持五种数据结构之外,还支持事务、流水线、发布/订阅、消息队列等功能
- 原子性操作
- 主从复制
- 支持高可用和分布式
Redis 安装
基于 Linux 系统(菜鸟教程)
# wget http://download.redis.io/releases/redis-6.0.8.tar.gz
# tar xzf redis-6.0.8.tar.gz
# cd redis-6.0.8
# make
Redis 命令集
基础命令
Redis 中的数据库实例只能由 Redis 服务来创建和维护,开发人员不能修改和自行创建数据库实例;默认情况下,Redis 会自动创建16个数据库实例,并且给这些数据库实例进行编号,从0开始,一直到15,使用时通过编号来使用数据库;可以通过配置文件,指定 Redis 自动创建的数据库个数;Redis 的每一个数据库实例本身占用的存储空间是很少的,所以也不造成存储空间的太多浪费。
1、启动 Redis 服务,& 表示以后台程序方式运行
redis-server
redis-server &
redis-server redis.conf &2、关闭 Redis服务
kill redis线程
redis-cli shutdown (推荐)3、连接 Redis 客户端
redis-cli (默认连接127.0.0.1(本机)的6379端口上的 Redis 服务)
redis-cli -p 端口号(连接127.0.0.1(本机)的指定端口上的 Redis 服务)
redis-cli -h ip地址 -p 端口(连接指定ip主机上的指定端口的redis服务)4、退出 Redis 客户端
exit
quit5、切换数据库实例
select index (index 数据库实例数。例如 select 0,select 1)
6、测试redis服务的性能
redis-benchmark
7、查看redis服务是否正常运行
ping (如果正常---pong)
8、查看redis服务器的统计信息
info (查看 Redis服务的所有统计信息)
info [信息段] (查看redis服务器的指定的统计信息。如:info Replication)9、清空数据库实例
flushdb
10、清空所有的数据库实例
flushall(慎用)
11、查看redis中所有的配置信息
config get *
config get post (查看指定信息)
Key 相关
1、查看当前数据库实例中所有key的数量
dbsize
2、查看当前数据库实例中所有的key,pattern 可以为正则表达式,*匹配0个或者多个字符;?匹配1个字符;[]匹配里边的1个字符
keys pattern
3、判断key是否存在
exists key
4、移动指定key到指定的数据库实例,index 为数据库实例
move key index
5、查看指定key的剩余生存时间,如果key没有设置生存时间,返回-1;如果key不存在,返回-2
ttl key
6、设置key的最大生存时间,seconds 秒数
expire key seconds
7、查看指定key的数据类型
type key
8、重命名,newname 新名称
rename key newname
9、删除,可以删除一个或多个key,返回删除key的数量
del key [key key ......]
String 相关
1、创建
set key value
2、读取
get key
3、追加
append key value
4、获取字符串长度
strlen key
5、返回加1运算之后的数据,如果key不存在,首先设置一个key,值初始化为0,然后进行incr运算,要求key所表示value必须是数值,否则报错
incr key
6、返回减1运算之后的数据,如果key不存在,首先设置一个key,值初始化为0, 然后进行decr运算,要求key所表示value必须是数值,否则报错
decr key
7、返回加offset运算之后的数据,如果key不存在,首先设置一个key,值初始化为0,然后进行incrby运算,要求key所表示value必须是数值,否则报错
incrby key offset
8、返回减offset运算之后的数据,如果key不存在,首先设置一个key,值初始化为0,然后进行decrby运算,要求key所表示value必须是数值,否则报错
decrby key offset
9、检索字符串中下标范围内的数据,下标可以为负数
getrange key startIndex endIndex
10、从下标处开始覆盖 value 长度的字符串
setrange key startIndex value
11、创建字符串同时设置字符串最大生命周期(秒数)
setex key seconds value
12、创建不覆盖,key不存在时创建成功,否则失败
setnx key value
13、批量创建
mset key value [key value .....]
14、批量获取
mget key [key key .....]
15、批量创建不覆盖,key都不存在时创建成功,否则失败
msetnx key value [key value .....]
List 相关
1、将一个或者多个值依次插入到列表的表头(左侧),如:lpush k1 1 2 3 结果:3 2 1
lpush key value [value value .....]
2、获取指定列表中指定下标区间的元素
lrange key startIndex endIndex
3、将一个或者多个值依次插入到列表的表尾(右侧),rpush k1 1 2 3 结果:1 2 3
rpush key value [value value .....]
4、从指定列表中移除并且返回表头元素(删除第一个值)
lpop key
5、从指定列表中移除并且返回表尾元素(删除最后一个值)
rpop key
6、获取指定列表中指定下标的元素
lindex key index
7、获取指定列表的长度
llen key
8、根据count值移除指定列表中跟value相等的数据。count>0:从列表的左侧移除count个跟value相等的数据;count<0:从列表的右侧移除count个跟vlaue相等的数据;count=0:从列表中移除所有跟value相等的数据
lrem key count value
9、截取指定列表中指定下标区间的元素组成新的列表,并且赋值给key
ltrim key startIndex endIndex
10、将指定列表中指定下标的元素设置为指定值
lset key index value
11、将value插入到指定列表中位于pivot元素之前/之后的位置
linsert key before/after pivot vlaue
Set 相关
1、将一个或者多个元素添加到指定的集合中,如果元素已经存在,则忽略。返回成功个数
sadd key value [value value ......]
2、获取指定集合中所有的元素
smembers key
3、判断元素在集合中是否存在,存在返回1,不存在返回0
sismember key member
4、获取指定集合的长度
scard key
5、移除指定集合中一个或者多个元素,不存在的元素会被忽略,返回成功成功移除的个数
srem key member [member .....]
6、随机获取指定集合中的一个或者多个元素,count>0,随机获取的多个元素之间不能重复;count<0,随机获取的多个元素之间可能重复
srandmember key [count]
7、从指定集合中随机移除一个或者多个元
spop key [count]
8、将指定集合中的指定元素移动到另一个元素
smove source dest member
9、获取第一个集合中有、但是其它集合中都没有的元素组成的新集合
sdiff key key [key key ....]
10、获取所有指定集合中都有的元素组成的新集合(并集)
sinter key key [key key ....]
11、获取所有指定集合中所有元素组成的大集合(交集)
sunion key key [key key .....]
ZSet 相关
本质上是集合,所有元素不能重复。每一个元素都关联一个分数,redis会根据分数对元素进行自动排序,分数可以重复。
1、将一个或者多个member及其score值加入有序集合
zadd key score member [score member ....]
2、获取指定有序集合中指定下标区间的元素
zrange key startIndex endIndex [withscores]
3、获取指定有序集合中指定分数区间(闭区间)的元素
zrangebyscore key min max [withscores]
4、删除指定有序集合中一个或者多个元素
zrem key member [member......]
5、获取指定有序集合中所有元素的个数
zcard key
6、获取指定有序集合中分数在指定区间内的元素的个数
zcount key min max
7、获取指定有序集合中指定元素的排名(排名从0开始)
zrank key member
8、获取指定有序集合中指定元素的分数
zscore key member
9、获取指定有序集合中指定元素的排名(按照分数从大到小的排名)
zrevrank key member
Hash 相关
1、将一个或者多个field-vlaue对设置到哈希表中(如果key field已经存在,把value会把以前的值覆盖掉)
hset key filed1 value1 [field2 value2 ....]
2、获取指定哈希表中指定field的值
hget key field
3、批量将多个field-value对设置到哈希表中
hmset key filed1 value1 [field2 value2 ....]
4、批量获取指定哈希表中的field的值
hmget key field1 [field2 field3 ....]
5、获取指定哈希表中所有的field和value
hgetall key
6、从指定哈希表中删除一个或者多个field
hdel key field1 [field2 field3 ....]
7、获取指定哈希表中所有的filed个数
hlen key
8、判断指定哈希表中是否存在某一个field
hexists key field
9、获取指定哈希表中所有的field列表
hkeys key
10、获取指定哈希表中所有的value列表
hvals key
11、对指定哈希表中指定field值进行整数加法运算
hincrby key field int
12、对指定哈希表中指定field值进行浮点数加法运算
hincrbyfloat key field float
13、将一个field-vlaue对设置到哈希表中,当key-field已经存在时,则放弃设置;否则,设置file-value
hsetnx key field value