Redis学习笔记B站狂神说
redis: 非关系型数据库
一.NoSQL概述
1.为什么要用Nosql
1.单机Mysql的年代
3.分库分表+水平拆分+MySQL集群
本质:数据库(读.写)
早些年
MyISAM:表锁,十分影响效率!高并发下就会出现严重的锁问题
Innodb: 行锁.
慢慢的就开始使用分库分表来解决写的压力!MySQL在那个年代退出了表分区!这个并没有多少公司使用!
Mysql的集群,很好满足了那个年代的所有需求!
5.目前一个基本的互联 项目
“IOE”这三样标配:
I(IBM,服务器提供商,他们提供的服务器俗称“小型机”)
O(Oracle,数据库提供商,他们的软件是著名的“甲骨文商业数据库”)
E(EMC,存储设备提供商,他们提供的是“集中式存储”)
4.NoSQL的四大分类
KV键值对
- 新浪 : Redis
- 美团 : Redis + Tair
- 阿里 . 百度 : Redis + memecache
文档型数据库(bson格式 和json一样)
- MongoDB (一般必须掌握)
- MongoDB是一个基于分布式文件存储的数据库,C++编写,主要来处理大量的文档!
- MongoDB是一个介于关系型数据库和非关系型数据中中间的产品! MongoDB 是非关系型数据库中功能最丰富的,最像关系型数据库的!
- ConthDB
列存储数据库
- HBase
- 分布式文件系统
图关系数据库
二.Redis入门
1.概述
Redis 是什么/p>
Redis (Remove Dictionary Server) 即远程字典服务
是一个开源的使用ANSI C语言编写,支持 络,可基于内存亦可持久化的日志型,Key-Value数据库,并提供多种语言的API
Redis推荐都是在Linux服务器上搭建的,我们是基于Linux学习的!
windows太老了就不下了
2.Linux下载安装
1.首先下载安装包
官 :https://redis.io/
4.基本的环境安装
6.将redis配置文件,复制到我们当前文件(防止发生意外备份一下)
当前目录:
8.启动redis服务
通过指定的配置文件启动服务
出现pong成功
设置名字
查看所有信息
将这个终端放在这,再开一个终端
执行命令
查看redis进程是否开启
12.再次查看redis进程是否关闭
4.基础知识
redis默认有16个数据库
默认使用的是第0个
可以使用select进行切换
清除所有数据库
清除当前数据库
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
Redis-Key
1.exists name # 判断当前key是否存在 存在为1 反之为0
2.move name # 移除当前key
3.expire name 10 # 设置key的过期时间,单位是秒
4.ttl name # 查看当前key的剩余时间
5.type name # 查看key的类型
不会的命令官 直接搜索
![]()
String
1.append name “shanjiao” # 追加字符串,如果当前key不存在相当于setkey
2.strlen name # 查看指定key的长度
3.incr views # views自增1
4.decr views # views自减1
5.incrby views 10 # 自定义设置自增步长
6.decrby views 5 # 自定义设置自减步长
#############################################################127.0.0.1:6379> set name codeyuaiiao # 设置keyOK127.0.0.1:6379> get name # 查看key"codeyuaiiao"127.0.0.1:6379> exists name # 判断某一个key是否存在(integer) 1127.0.0.1:6379> append name "shanjiao" # 追加字符串,如果当前key不存在相当于setkey(integer) 19127.0.0.1:6379> get name"codeyuaiiaoshanjiao"127.0.0.1:6379> strlen name # 查看指定key的长度(integer) 19127.0.0.1:6379> #############################################################127.0.0.1:6379> set views 0 #设置views为0 初始化浏览量OK127.0.0.1:6379> get views"0"127.0.0.1:6379> incr views # views自增1(integer) 1127.0.0.1:6379> incr views(integer) 2127.0.0.1:6379> incr views(integer) 3127.0.0.1:6379> decr views # views自减1(integer) 2127.0.0.1:6379> decr views(integer) 1127.0.0.1:6379> decr views(integer) 0127.0.0.1:6379> decr views(integer) -1127.0.0.1:6379> incrby views 10 # 自定义设置自增步长(integer) 9127.0.0.1:6379> incr views(integer) 10127.0.0.1:6379> decrby views 5 # 自定义设置自减步长(integer) 5127.0.0.1:6379> ######################################################## 字符串范围 range127.0.0.1:6379> set name zhangyinjieOK127.0.0.1:6379> get name"zhangyinjie"127.0.0.1:6379> getrange name 0 5 # 截取字符串"zhangy"127.0.0.1:6379> getrange name 0 -1 # 获取所有字符串"zhangyinjie"# 替换127.0.0.1:6379> set name2 codeyuaiiaoOK127.0.0.1:6379> get name2"codeyuaiiao"127.0.0.1:6379> setrange name2 1 qwe # 替换字符串(integer) 11127.0.0.1:6379> get name2"cqweyuaiiao"127.0.0.1:6379> ############################################################ setex (set with expire) #设置过期时间# setnx (set if not exist) # 不存在再设置 (在分布式锁中会常常使用!)127.0.0.1:6379> setex name 30 "hello codeyuaiiao" #设置name的值为hello codeyuaiiao 30秒后过期OK127.0.0.1:6379> ttl name
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!