Redis 学习笔记(一) 系列

一、Redis初映象

高性能的key-value服务器
多种数据结构(区别于memcached)
丰富的功能 
高可用分布式支持

二、相识

2-1、Redis初识
2-1-1、Redis是什么
	开源(短小,精悍)、key-value基于键值的存储服务系统(Java中的Map)、多种数据结构(String、Hash Tables、Linked Lists、Sets、Sorted Sets)、高性能
2-1-2、Redis的特性
  1. 速度快(10W OPS)
    数据===》 内存中
    什么语言===》 C语言(5万行,最近版本)
    线程模型===》 单线程
    读写对比
    在这里插入图片描述
  2. 持久化(断电不丢数据)
    Redis所有数据保持在内存中,对数据的更新将异步的保存到磁盘上
  3. 多种数据结构,5种,其他为衍生
    String、Hash Tables、Linked Lists、Sets、Sorted Sets
    BitMaps:位图(属于String)
    HyperLogLog:超小内存唯一值计算
    GEO:地理信息定位()
  4. 支持多种编程语言
    Java 、PHP 、Ruby 、LUA
  5. 功能丰富(发布订阅)
    发布订阅
    Lua脚本
    事务
    pipeline
  6. 简单(代码,使用)
    单机的开发版(2万多行)
    3之后,增加集群功能
    不依赖外部库
    单线程模型
  7. 主从复制
  8. 高可用、分布式
    高可用===》Redis-Sentinel(V2.8)支持高可用
    分布式===》Redis-Cluster(V3.0)支持分布式
2-1-3、Redis的典型应用场景
缓存系统
计数器(转发数,评论数,点赞,播放次数)
消息队列系统(发布订阅,简单的消息队列。专业=》kafka)
排行榜(视频、游戏,有序集合)
社交网络(天然适合,微博)
实时系统(布隆过滤器?,位图)

(Linux)redis安装
	1、安装wget
		yum -y install wget
	2、下载redis
		wget http://download.redis.io/releases/redis-5.0.8.tar.gz
	3、解压
		tar xzf redis-5.0.8.tar.gz
	4、建立软连接,方便管理
		ln -s redis-5.0.8 redis
	5、切换到redis目录
		cd redis
	6、编译
		make
	7、安装
		make install
			src目录下
				redis-benchmark  # 压力测试,基准测试
				redis-check-aof  # 较完成持久化,AOF文件修复工具
				redis-check-rdb  # redis默认持久化,适合大面积
				redis-check-dump # RDB文件修复工具
				redis-cli  # 连接客户端
				redis-sentinel # 高可用 。哨兵机制
				redis-server # 服务端
	8、启动,任意目录,三种方式
		1、redis-server默认启动
		2、指定端口启动:redis-cli -p 6380
		**3、(生产环境建议)使用配置文件进行启动**单机多实例区分管理
		/opt目录下
			修改redis.conf文件
			daemonize yes  以守护进程方式启动
			port 6381 端口
			dir “/opt/soft/redis/data” 工作目录
			logfile "6381.log" 日志
		指定配置文件进行启动
		redis-server config/redis-6381.conf

		查看进程进行验证ps -ef | grep redis
			
		Redis客户端 redis-cli -h   -p  
2-2、API的使用
  1. 通用命令
    通用命令
    keys # 遍历所有的key,太重,O(n),生产不要使用;热备从节点;scan
    dbsize # 计算key的总数,计数器,O(1)
    exists key # 是否存在key,存在返回1,不存在返回0,O(1)
    del key # 删除key,成功删除返回1,O(1)
    expire key seconds # 为key设置有效时间,缓存场景,O(1)
    ttl key # 查看key剩余的过期时间,-2代表key已不存在;-1代表key存在,并且没有设置过期时间
    persist key # 去掉key的过期时间
    type key 数据类型,O(1)
    数据结构和内部编码
    redis数据结构和内部编码
    单线程架构
    使用注意:
    1、一次只运行一条命令
    2、拒绝长命令(keys,flushall,flushdb)
    3、其实不是单线程(比如文件操作)

  2. 字符串类型
    结构和命令
    get获取、set设置、del删除
    incr计数自增1 O(1),如果key不存在,自增后get(key)=-1
    decr 自减1,如果key不存在,自减get(key)=-1
    incrby key k key自增k,如果key不存在,自增后get(key)=k
    decr key k # key自减k,如果key不存在,自减后get(key)=-k
    set key value # 不管key是否存在,都设置
    setnx key value # key不存在,才设置(add操作)
    set key value xx # key存在,才设置(update操作)
    mget key1 key2 # 批量获取,原子操作O(n),n次get = n次网络时间+n次命令时间
    mset key1 value1 key2 value2 # 批量设置key-value,O(n)
    使用场景:缓存、计数器(单线程无竞争)、分布式锁等
    getset key newvalue # set key newvalue并返回旧的value,O(1)
    append key value # 将value追加到旧的value,O(1)
    strlen key # 返回字符串的长度(注意中文),O(1)
    incrbyfloat # 浮点类型,增加key对应的值
    getrange key start end # 获取字符串指定下标所有的值,计数从0开始
    setrange key index value # 设置指定下标所有对应的值
    内部编码

  3. 哈希类型

  4. 列表类型

  5. 集合类型

  6. 有序集合类型

2-3、Redis客户端的使用
2-4、多种功能
2-6、Redis复制的原理和优化
2-7、Redis Sentinel
2-8、Redis Cluster(分布式实现)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值