Redis6学习笔记-不定时更新

发布于:2022-11-28 ⋅ 阅读:(276) ⋅ 点赞:(0)

目录

一、了解NoSQL 

二、Redis概述

三、常用五大数据类型

(一)key键操作

(二)Redis字符串(String)

1.简介

2.常用命令

3.数据结构 

(三)Redis列表(List)

1.简介  

2.常用命令

3.数据结构

(四)Redis集合(Set)

1.简介

2.常用命令

3.数据结构


一、了解NoSQL 

NoSQL \Rightarrow“Not Only SQL”,意思为“不仅仅是SQL”,泛指非关系型的数据库Redis是典型的NoSQL数据库。

存储数据库-不同分类特点对比

分类

Examples举例

典型应用场景

数据模型

优点

缺点

键值(key-value)

Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB

内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。

Key 指向 Value 的键值对,通常用hash table来实现

查找速度快

数据无结构化,通常只被当作字符串或者二进制数据

列存储数据库

Cassandra, HBase, Riak

分布式的文件系统

以列簇式存储,将同一列数据存在一起

查找速度快,可扩展性强,更容易进行分布式扩展

功能相对局限

文档型数据库

CouchDB, MongoDb

Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)

Key-Value对应的键值对,Value为结构化数据

数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构

查询性能不高,而且缺乏统一的查询语法。

图形(Graph)数据库

Neo4J, InfoGrid, Infinite Graph

社交网络,推荐系统等。专注于构建关系图谱

图结构

利用图结构相关算法。比如最短路径寻址,N度关系查找等

很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。

二、Redis概述

Redis是一个开源的key-value存储系统。

Redis是单线程+多路IO复用,支持持久化。

三、常用五大数据类型

(一)key键操作

  • keys *  查看当前库所有key(匹配:keys*1)
  • set key value 给某个key赋值
  • exists key 判断某个key是否存在
  • type key 查看你的key是什么类型
  • del key 删除指定的key数据
  • unlink key 根据value选择非阻塞删除,仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。
  • expire key 10 10秒钟:为给定的key设置过期时间
  • ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
  • select 命令切换数据库
  • dbsize 查看当前数据库的key的数量
  • flushdb 清空当前数据库
  • flushall 通杀全部库

(二)Redis字符串(String)

1.简介

String是Redis中最基本的类型,一个key对应一个value,是二进制安全的,可以包含任何数据,比如jpg图片、序列化对象。
一个Redis中字符串value最多可以是512M。

 

2.常用命令

  • set <key> <value> 赋值
  • get <key> <value> 获取值
  • append <key> <value> 在原有的key对应的值后追加value
  • strlen <key> 获取值的长度
  • setnx <key> <value> 只有key不存在时,设置key的值
  • incr <key> 将key中存储的数字值增1
  • decr <key> 将key中存储的数字值减1
  • incrby/decrby <key><步长> 自定义增减步长
  • mset <key1> <value1> <key2> <value2>... 同时设置一个或多个键值对
  • mget <key1> <value1> <key2> <value2>... 同时获取一个或多个value
  • msetnx <key1> <value1> <key2> <value2>... 同时设置一个或多个key-value对,当且仅当所有给定key都不存在。(原子性操作,有一个失败则都失败)
  • getrange <key> <起始位置> <结束位置> 获得值的范围,类似java中的substring,前包,后包
  • setrange <key> <起始位置> <value> 用<value>复写<key>所存储的字符串值,从<起始位置>开始(索引从0开始) 
  • setex <key> <过期时间>< value> 设置键值的同时,设置过期时间,单位秒
  • getset <key> <value> 以旧换新,设置了新值同时获得旧值。

3.数据结构 

(三)Redis列表(List)

1.简介  

单键多值

Redis列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或尾部(右边)。

它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

2.常用命令

  • lpush/rpush <key> <value1> <value2> <value3>... 从左边/右边插入一个或多个值。
  • lpop/rpop <key> 从左边/右边吐出一个值。值在键在,值光键亡。
  • rpoplpush <key1><key2> 从<key1>列表右边吐出一个值,插到<key2>列表左边。
  • lrange<key><start><stop> 按照索引下标获得元素(从左到右)
  • lrange mylist 0 -1 0左边第一个,-1右边第一个,(0-1表示获取所有)
  • lindex <key> <index> 按照索引下标获得元素(从左到右)
  • llen <key> 获得列表长度
  • linsert <key> before <value> <newvalue> 在<value>的后面插入<newvalue>插入值
  • lrem<key> <n> <value> 从左边删除n个value(从左到右)
  • lset <key> <index> <value> 将列表key下标为index的值替换成value

3.数据结构

List的数据结构为快速链表quickList。

(四)Redis集合(Set)

1.简介

2.常用命令

  • sadd <key> <value1> <value2>... 将一个或多个member元素加入到集合key中,已经存在的member元素将被忽略。
  • smembers <key> 取出该集合的所有值。
  • sismember <key> <value> 判断集合<key>是否为含有该<value>值,有1,没有0。
  • scard <key> 返回该集合的元素个数。
  • srem <key> <value1> <value2>... 删除集合中的某个元素。
  • spop <key> 随机从该集合中吐出一个值。
  • srandmember <key> <n> 随机从集合中取出n个值。不会从集合中删除。
  • smove <source> <destination> value把集合中一个值从一个集合移动到另一个集合
  • sinter <key1> <key2> 返回两个集合的交集元素。
  • sunion <key1> <key2> 返回两个集合的并集元素。
  • sdiff <key1> <key2> 返回两个集合的差集元素(key1中的,不包含key2中的)。

3.数据结构

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到