Redis
简述
什么是Redis
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI 编写、支持网络、可基于内存亦可持久化的日志型、Key-Value,并提供多种语言的API。
什么是Nosql
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。泛指非关系型数据库。
处理数据量增大、数据变化快、系型数据库缓慢的问题
-
特点
- 方便扩展
- 大数据量高性能
- 数据类型是多样的(不需要事项自己设计数据库)
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEZK6r50-1654409260309)(E:\笔记\images\image-20220420102214077.png)]
-
NoSQL 数据库分类
- 列存储
- Hbase,Cassandra,Hypertable
- K-V键值对
- redis,MemcacheDB
- 图存储
- Neo4J,FlockDB
- 文档存储(json,Bson)
- MongoDB(最像关系型数据库的非关系型数据库),CouchDB
- 列存储
Redis安装配置
-
redis安装目录下执行: redis-server.exe redis.windows.conf,开启redis服务
-
另外开一个窗口:redis-cli.exe -h 127.0.0.1 -p 6379
-
其他安装:Redis 安装_w3cschool
-
redis配置
- Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.windows.conf (x64)
- config命令:
- CONFIG GET CONFIG_SETTING_NAME
- config get *获取全部配置
- 通过修改 redis.windows.conf 文件或使用 CONFIG set 命令来修改配置
- CONFIG GET CONFIG_SETTING_NAME
redis数据类型
Redis支持五种数据类型:
string(字符串),
hash(哈希),
list(列表),
set(集合)及
zset(sorted set:有序集合)
-
string类型
- k-v
- 二进制安全
- 一个key最大存储512M
- 指令
- set,get,strlen,append,incr,decr,incrby,decrby(按步长增加或者减少)
- getrange(子串),0 -1返回整个字符串
- setrange替换指定位置开始的字符串
- setex:将值 value 关联到 key ,并将 key 的过期时间设为 seconds
- setnx : 只有在 key 不存在时设置 key 的值。
- Mset: 同时设置一个或多个 key-value 对。
- Mget: 获取所有(一个或多个)给定 key 的值
-
Hash(key==>Map)
-
键值
(key=>value)
对集合 -
string
类型的field
和value
的映射表,hash
特别适合用于存储对象 -
HMSET, HGETALL
-
HMSET user:1 username w3cschool.cn password w3cschool.cn points 200
-
HGETALL user:1
-
命令 描述 Redis Hmset 命令 同时将多个 field-value (域-值)对设置到哈希表 key 中。 Redis Hmget 命令 获取所有给定字段的值 Redis Hset 命令 将哈希表 key 中的字段 field 的值设为 value 。 Redis Hgetall 命令 获取在哈希表中指定 key 的所有字段和值 Redis Hget 命令 获取存储在哈希表中指定字段的值/td> Redis Hexists 命令 查看哈希表 key 中,指定的字段是否存在。 Redis Hincrby 命令 为哈希表 key 中的指定字段的整数值加上增量 increment 。 Redis Hlen 命令 获取哈希表中字段的数量 Redis Hdel 命令 删除一个或多个哈希表字段 Redis Hvals 命令 获取哈希表中所有值 Redis Hincrbyfloat 命令 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。 Redis Hkeys 命令 获取所有哈希表中的字段 Redis Hsetnx 命令 只有在字段 field 不存在时,设置哈希表字段的值。
-
-
List(列表)
-
Redis
列表是简单的字符串列表,按照插入顺序排序。 -
lpush添加,lrange遍历
-
lpush w3cschool.cn redis,mongodb,rabbitmq
-
lrange w3cschool.cn 0 3类似数组index
-
可以当栈,队列,阻塞队列
-
命令(L开头)
-
命令 描述 Redis Lindex 命令 通过索引获取列表中的元素 Redis Rpush 命令 在列表尾部添加一个或多个值 Redis Lrange 命令 获取列表指定范围内的元素 Redis Rpoplpush 命令 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 Redis Blpop 命令 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 Redis Brpop 命令 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 Redis Brpoplpush 命令 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 Redis Lrem 命令 移除列表元素 Redis Llen 命令 获取列表长度 Redis Ltrim 命令 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 Redis Lpop 命令 移出并获取列表的第一个元素 Redis Lpushx 命令 将一个或多个值插入到已存在的列表头部 Redis Linsert 命令 在列表的元素前或者后插入元素 Redis Rpop 命令 移除并获取列表最后一个元素 Redis Lset 命令 通过索引设置列表元素的值 Redis Lpush 命令 将一个或多个值插入到列表头部 Redis Rpushx 命令 为已存在的列表添加值
-
-
Set(集合)唯一
-
Set
是string
类型的无序集合,集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1) -
sadd 命令,添加一个
string
元素到key
对应的set
集合中,成功返回1,如果元素已经在集合中返回0,key
对应的set
不存在返回错误 -
smembers key查看元素
-
命令 描述 Redis Sunion 命令 返回所有给定集合的并集 Redis Scard 命令 获取集合的成员数 Redis Srandmember 命令 返回集合中一个或多个随机数 Redis Smembers 命令 返回集合中的所有成员 Redis Sinter 命令 返回给定所有集合的交集 Redis Srem 命令 移除集合中一个或多个成员 Redis Smove 命令 将 member 元素从 source 集合移动到 destination 集合 Redis Sadd 命令 向集合添加一个或多个成员
-