Redis_01基本概念

1.CAP

C强一致性、A可用性、P分区容错性(分布式容忍性)

1.1CAP的3选2

CA:单点集群,通常可扩展性不大。传统的Oracle数据库;
CP:通常性能不高。Redis、MongoDB;目的是帮助数据库减负。
AP:对一致性要求不高。大多数网站架构的选择,金融、电商;比如浏览数、点赞数等双11大促;

P是我们必须要实现的,因为机房异地,规模大

2.BaSE

Ba基本可用
S软状态
E最终一致性

**核心思想:**通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上的改观。

3.分布式、集群概念

分布式:不同的服务器上部署不同的服务模块
集群:不同的服务器上部署相同的服务模块

4.Redis

Remote Dictionary Server(远程字典服务器),完全开源C,高性能的KV分布式内存数据库。

三个特点:

  1. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中
  2. Redis不仅仅支持简单的KV类型的数据,同时还提供list、set、zset、hash等数据结构
  3. Redis支持数据的备份,即master-slave模式的数据备份

五个功能:

  1. 内存存储和持久化:异步将内存数据写到硬盘
  2. 取最新N个数据操作,直接可以放在缓冲的List集合中
  3. 模拟类使用httpsession这种需要设定过期时间的功能
  4. 发布、订阅消息系统
  5. 定时器、计数器

4.1安装

  • 建议:使用linux版,用win不是丢不起人,而是耽误前程!

1.注意事项

在redis安装目录下,运行make,如果报错,就安装gcc;
二次make:提示不存在文件、目录;则make distclean之后在clean;

2.修改配置文件
修改为yes,即为后台自动运行
在这里插入图片描述

ps -ef | grep redis  #查看是否启动
redis-server /redis/redis.conf #启动redis服务器
redis-cli -p 6379 #启动redis客户端

在这里插入图片描述

/bin/redis-benchmark   #单元测试

4.2基础知识

  1. 单进程

单进程模型来处理客户端的请求,对读写等事件的响应是通过epoll函数的包装来完成的。Redis的实际处理速度完全依赖主进程的执行效率。
Epoll是Linux内核为处理大批量文件描述符而做了改进的epoll,是Linix下多路复用IO接口select/poll增强版,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统cpu利用率。

  1. 默认16个数据库,默认使用0号库
# 查看配置文件-databases
select 7  #切换到6号库
get k1
set k1 v1
dbsize # 查看当前数据库key的数量
keys * #查看所有的redis
flushDb #删除当前库
flushAll #删除所有的库
  1. redis索引默认从0开始
  2. 端口6397:merz
  3. 统一密码管理

4.3数据类型

  1. redis的五大数据类型
String:二进制安全(可以保护任何数据,序列化对象和图片),value最多是512M
Hash(类于map):string类型的field和value的映射表,hash特别适合存储对象
List:底层是个链表,string类型的列表,你可以列表左右都可以插入;(有序有重复)
Set:是string的无序集合,通过Hashtable实现;(无序无重复)
Zset(有序集合):和set一样也是string类型集合,不允许重复元素,但不同是每个元素都会关联一个double类型的分数,通过分数排序。
一个典型的应用:比如玩游戏说,多少分的人数高达多少人了-----
  1. key的常用命令
keys *
exists key #判断某个key是否存在
move key db #当前库就没有了,被移除了
expire key 时间  # 为给定的key设置过期时间
ttl key #查看多少秒过期,-1永不过期,-2表示已过期
type key #查看你的key是什么类型
  1. 字符串String

生效返回1,不生效返回0;

set/get/del/append/strlen 
incr/decr/incrby/decrby #一定是数字才能加减(单步、多步)
getrange/setrange #获取某一个范围的值(getrange k1 0 -1);设置某一个范围的值(setrange key 0 xxx 从第0位后加xxx)
setex(set with expire)键秒值/setnx(set if not exist) #如果不存在才会set
mset/mget/msetnx #批量操作,要么都成功,要么都失败(msetnx k3 v3 k4 v4)
getset#先get再set
  1. List
    把栈左旋90度,再理解下面的功能(从左往右)
lpush/rpush/lrange  #左边(正进反出)、右边(队列)、lrange list1 0 -1
lpop/rpop #左边(按顺序出)、右边(倒着出栈)
lindex list1 2 #从0开始的索引,获取值
llen
lrem key #删n个value
ltrim key start end #截取指定范围后再复制给key
rpoplpush 源列表 目的列表 #把源列表底部取出来放到目的列表头部
lset key index value
linsert key before/after v1 v2

它是一个字符串链表,left、right都可以插入添加;
如果键不存在,创建新的链表;
如果键已存在,新增内容;
如果值全移除,对应的键也就消失了;
链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。

  1. Set
sadd/smembers/slsmember #添加
scard #获取集合里面的元素个数
srem key value #删除集合中的元素
srandmember set key #某个整数(随机出几个数)
spop key #随机出栈
smove key1 key2 #在key1里某个值,作用是将key1里值赋给key2
sdiff 差集 sinter 交集 sunion并集
  1. Hash
    KV模式不变,但V是一个键值对
hset/hget/hmset/hmget/hgetall/hdel
hlen
hexists key #在key里面的某个值的key
hkeys/hvals
hincrby/hincrbyfloat
hsetnx 
  1. Zset
    在set基础上,加一个score值,之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2
zadd/zrange withscores 
zrangebyscore key startscore endscore # (  不包含、limit 开始下标步 多少步
zrem key # 某score下对应的value值
zcard/zcount key score区间/zrank key values #作用是获得下标值/zscore key 对应值,获得分数
zrevrank key values值#作用是逆序获得下标值
zrevrange
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值