Redis介绍

一.Redis

1.NoSql
Redis是目前非常流行的一款NoSql数据库.

什么是NoSql
NoSql简介
NoSQL(NoSQL=Not Only SQL),意即”不仅仅是SQL”.
在现代的计算系统上每天网络上都会产生庞大的数量.
这些数据有很大一部分是由关系数据库管理系统(RDBMS)来处理.1970年E.F.Codd’s提出关系模型的论文”A relational model of data for large shared data banks”,这使得数据建模和应用程序编程更加简单.
通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术.
NoSQL是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨.NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入.

常见的NoSql产品
在这里插入图片描述

二.Redis介绍

2.1Redis简介
特性:
多种数据类型存储:

  • 字符串类型 string
  • 散列类型 hash
  • 列表类型 list
  • 集合类型 set
  • 有序集合类型 zset(sorted set)

内存存储与持久化:

  • 内存的读写速度远快于硬盘
  • 自身提供了持久化功能(RDB,AOF两种方式)

功能丰富:

  • 可用作缓存,队列,消息订阅/发布
  • 支持键的生存时间
  • 按照一定规则删除相应的键

简单稳定:

  • 相比SQL而言更加简单
  • 不同语言的客户端丰富
  • 基于C语言开发,代码量只有3万多行

2.2. Redis与Memcache
Redis和Memcache是目前非常流行的两种NoSql数据库,都可以用于服务端缓存.两者有怎样的差异呢?
从实现来看:

  • Redis:单线程
  • Memcache:多线程

从存储方式来看:

  • Redis:支持数据持久化和主从备份,数据更安全
  • Memcache:数据存与内存,没有持久化功能

从功能看:

  • Redis:除了基本的k-v机构外,支持多种其他复杂结构,事务等高级功能
  • Memcache:只支持基本k-v结构

从可用性看:

  • Redis:支持主从备份,数据分片,哨兵监控
  • Memcache:没有分片功能,需要从客户端支持

可以看出,Redis和Memcache功能更强大,支持的数据结构也比较丰富,已经不仅仅是一个缓存服务.而Memcache的功能相对单一.

2.3 Redis指令
Redis指令在线测试网址:https://try.redis.io/
通过help命令可以让我们查看Redis指令帮助信息:
在help后面跟上空格,然后按tab键,回看到Redis对命令分组的组名:
在这里插入图片描述

主要包括:

  • @generic:通用指令
  • @String:字符串类型指令
  • @list队列结构指令
  • @set:set结构指令
  • @sorted_set:可排序的set结构指令
  • @hash:hash结构指令

其中除了@generic以外的,对应了Redis常用的5中数据类型:

  • String:等同于java中的Map<String,String>
  • List:等同于java中的Map<String,List>
  • Set:等同于java中的Map<String,Set>
  • sort_set:可排序的set
  • Hash:等同于java中的Map<String,Map<String,String>>

可见,Redis中存储数据结构都是类似java的map类型.Redis不同数据类型,只是’map’的值的类型不同.

2.3.1 通用指令
keys:获取符合规则的键名列表.
语法:keys pattern
示例:keys *(查询所有的键)
在这里插入图片描述

这里的pattern其实是正则表达式,所以语法基本是类似的

exists:判断一个键是否存在,如果存在返回整数1,否则返回0
语法:exists key
示例:
在这里插入图片描述

del:删除key,可以删除一个或多个key,返回值是删除的key的个数
语法:del key[key…]
示例:
在这里插入图片描述

expire:设置key的过期时间,超过时间后,将会自动删除该key.
语法:expire key seconds
返回值:
如果成功设置过期时间,返回1
如果key不存在或者不能设置过期时间,返回0

TTL:查看一个key的过期时间
语法:TTL key
返回值:
返回剩余的过期时间
1:永不过期
2:已过期或不存在
示例:
在这里插入图片描述

persist:移除给定的生存时间,将这个key从带生存时间key转换成一个不带生存时间,永不过期的key.
语法:persist key
返回值:
当生存时间移除成功时,返回1.
如果key不存在或key没有设置生存时间,返回0.
示例:
在这里插入图片描述rename:重命名
语法:
rename key newkey

type:判断一个key的类型
语法:
type key

ping:测试连接是否正常

2.3.2 字符串指令
字符串结构,其实是Redis中最基础的K-V结构.其键和值都是字符串.类似于Java中的Map<String,String>
字符串烈性是Redis中最基本数据类型,它能存储任何形式的字符串,包括二进制数据.可以存储JSON化的对象,字节数组等.一个字符串类型键允许存储的数据最大容量是512MB.
常用指令:

语法说明
set key value设置指定key的值
get key获取指定key的值
getrange key start end返回key中字符串值得子字符(start和end是字符串开始和结束的下标值)
incr key将key中存储的数字值增1
incrby key increment将key所存储的值加上给定的增量值(increment)
decr key将key中存储的数字值减1
decrby key decrement将 key所存储的值减去给定的减量值(decrement)
append key value如果key已经存在并且是一个字符串,append命令将value追加到key原来的值得末尾
strlen key返回key所存储的字符串值得长度
mget key1 key2获取所有(一个或多个)给定key的值
mset key value key value同时设置一个或多个key-value对

2.3.3. hash结构命令
Reids的Hash结构类似于Java中Map<String,Map<String,String>>,键是字符串,值是另一个映射.结构如图:
在这里插入图片描述这里我们称键为key,字段名为hKey,字段值为hValue

常用指令:
HSET,HSETNX和HGET(添加,获取)
HSET介绍:
HSET key field value:将哈希表key中的字段field的值设为value.
Hset命令用于为哈希表中的字段赋值.
如果哈希表不存在,一个新的哈希表被创建并进行HSET操作.
如果字段已经存在于哈希表中,旧值将被覆盖.
返回值:
如果字段是哈希表中的一个新建字段,并且值设置成功,返回1.
如果哈希表中域字段已经存在且旧值已经被新值覆盖,返回0.
示例:
在这里插入图片描述HGET介绍:
HGET key field:获取存储在哈希表中指定字段的值
Hget命令用于返回哈希表中指定字段的值
返回值:
返回给定字段的值.如果给定的字段或key不存在时,返回nil.
示例:
在这里插入图片描述HGETALL介绍:
HGETALL key:获取在哈希表中制定key的所有字段和值
返回值:
指定key的所有字段的名及值.返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍
示例:
在这里插入图片描述

HKEYS介绍:
HKEYS key:获取所有哈希表中的字段
示例:
在这里插入图片描述

HVALS介绍:
HVALS key:获取哈希表中所有值
注意:这个命令不是HVALUES,而是HVALS,是value的缩写val
示例:
在这里插入图片描述

HDEL介绍:HDEL命令用于删除哈希表key中的一个或多个指定字段,不存在的字段将被忽略.
语法:
HDEL key field1 [field2]
返回值:
被成功删除字段的数量,不包括被忽略的字段
示例:
在这里插入图片描述2.3.4. 多数据库性
Redis默认是16个数据库,编号是从0-15
select index:切换库
move key index:把key移动到几号库(index是库的编号)
flushdb:清空当前数据库
flushall:清空当前实例下所有的数据库

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值