目录
什么是 Redis?
Redis 特点
Redis 安装
Redis 命令集
基础命令
Key 相关
String 相关
List 相关
Set 相关
ZSet 相关
Hash 相关
Redis 配置文件
Redis?持久化
Redis 事物
Redis 主从复制
Java 操作 Redis ?
什么是 Redis?
Redis是一个用C语言编写的、开源的、基于内存运行并支持持久化的 key-value、非关系型、NoSQL数据库。
Redis中的数据大部分时间都是存储内存中的,适合存储频繁访问、数据量比较小的数据。
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 ????????quit
5、切换数据库实例
????????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
Redis 配置文件
Redis?持久化
Redis 事物
Redis 主从复制
Java 操作 Redis ?
|