Redis基础入门

认识Redis

Redis诞生于2009年全称是Remote Dictonary Server,远程词典服务器,是一个基于内存的键值型的NoSqlshujy

特性:

  • 键值(key-value) 型,value支持多种不同数据结构,功能丰富
  • 单线程,每个命令具有原子性
  • 低延迟,速度快(基础内存,IO多路复用,良好的编码)
  • 支持数据持久化
  • 支持主从集群,分片集群
  • 支持多语言客户端

Redis数据结构介绍

Redis是一个key-value的数据库,key一般是string类型,不过value的类型多种多样

String--------------------------------> hello world

Hash---------------------------------->{name:"java",age:"21"}

List------------------------------------->[A->B->C->D]

Set------------------------------------->[A->B->C]

SortedSet----------------------------->[A:1,B:2,C:3]

GEO------------------------------------>{A:{120,3 30.5}}

BitMap--------------------------------->011001101010110

HyperLog------------------------------>011011011011101110

Redis 通过命令

通用指令是部分数据类型的,都可以使用的指定,常见的有:

常用的通用命令有以下几个

命令描述
KEYs pattern查找所有符合给定模式(pattern)的key
EXISTs key检查给定key是否存在
TYPE key返回key所储存的值的类型
TTL key返回给定key的剩余生存时间(TTL, time to live),以秒为单位
DEL key该命令用于在key存在是删除key

 String类型

String类型,也就是字符串类型,是Redis中最简单的存储类型

其value是字符串,不过根据字符串的格式不同,又可以分为3类

string:普通字符串

int:整数类型,可以自增,自减操作

float:浮点类型,可以做自增,自减操作

不管那种格式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型额最大空间不能超过512mb。

String的常见命令有:

SET : 添加或修改已经存在的一个String类型的键值对

GET:根据key获取String类型的value

MSET:批量添加多个String类型的键值对

MGET:根据多个key获取多个String类型的value

INCR: 让一个整型的key自增1

INCRBY:让一个整型的key自增并指定步长

INCRBYFLOAT:让一个浮点类型的数字自增并指定步长

SETNX: 添加一个String类型的的键值对,前提key不存在,否则不生效

SETEX: 添加一个String类型的键值对,并且指定有效期

Hash类型

Hash类型,也叫散列,其value是一个无序字典,类似于java中HashMap结构

String结构是将对象序列化为JSON字符串后存储,当需要修改某个字段时很不方便

KEYVALUE
reggie:user:1{“id”:1, “name”: “Jack”, “age”: 21}
reggie:dish:1{“id”:1, “name”: “鲟鱼火锅”, “price”: 4999}
  • Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD
KEYVALUE
fieldvalue
reggie:user:1nameJack
age 21

reggie:user:2
name Rose
age 18

Hash的常见命令有:

HSET key field value: 添加或者修改hash类型key的field的值

HGET key field:获取一个hash类型key的field的值

HMEST: 批量添加多个hash类型key的field的值

HMGET: 批量获取多个hash类型key的field的值

HGETALL: 获取一个hash类型key中的所有的field和value

HKEYS: 获取一个hash类型的key中所有的field

HVALS: 获取一个hash类型的key中的所有的value

HINCRBY: 让一个hash类型key的字段值自增并指定步长

HSETNX: 添加一个hash类型的key的field的值,前提是这个field不存在,否则不执行

List类型

Redis中List类型与java中的eLinkedList类似,可以看做是一个双向链表结构。既支持正向检索也可以支持反向检索

特征也与LinkedList类似:

一:有序  二:元素可以重复 三:插入和删除快 四:查询速度一般

常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等

List的常见命令有:

LPUSH key element :向列表左侧插入一个或多个元素

LPOP key:移除并返回列表左侧中的第一个元素,没有则返回nil

RPUSH key element:向列表右侧插入一个或多个元素

RPOP key:  移除并返回列表右侧中的第一个元素,没有则返回nil

LRANGE key star end: 返回一段角标范围内的所有元素

BLPOP和BRPOP:与LPOP和RPOP类型,只不过在没有元素时可以指定等待时间

如何利用List结构模拟一个栈?(先进后出)

入口和出口在同一边   lpop  lpush

如何利用List结构模拟一个队列?(先进先出)

入口和出口不在同一边   lpop rpush

如果利用list结构模拟一个阻塞队列?(阻塞)

入口和出口不在同一边 是队列

出队-时采用BLPOP和BRPOP

Set类型

Redis的set机构与java中的HashSet类似,可以看做是一个value为null的hashMap。因为也是一个hash表,因为具备与HashSet类型的特性:

一:无序 二:不可重复 三:查找快 四:支持交集,并集,差集等功能

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值