概念理解"/>
Redis概念理解
Redis概述
-Redis是一个开源的key-value存储系统
-支持的存储类型包括string(字符串)、list(链表)、set(集合)、zset(有序集合)、hash(哈希)
-数据类型都支持push/pop、add/remove以及并集、交集和差集等很多操作空间,并且都是原子性操作
-支持各种不同方式的排序
-数据都缓存在内存中
-Redis会周期性的将更新过的数据写入磁盘中或一些操作记录写入文件
-Redi支持master-slave(主从)同步机制
Redis使用场景
-配合关系型数据库做高速缓存
-存储高频次,热访问数据,降低数据库IO压力
-分布式情况下,可以用做session共享
-多样的数据结构存储持久化数据
-最新的数据
-排行榜
-验证码
-计数器,秒杀活动
-去除大量重复数据
-构建队列
-发布订阅消息模式
安装Redis步骤(linux)
1.下载官网下载安装包:
CRUG网站
2.下载安装最新的gcc编译器
yum install centos-release-scl scl-utils-build
yum install -y devtoolset-8-toolchain
scl enable devtoolset-8 bash
3.Redis安装包放入/opt目录
4.解压Redis安装包
tar -zxvf redis-6.2.1.tar.gz
5.进入Redis目录并执行 make 命令编译
6.安装Redis
make install
7.安装的目录
/usr/local/bin
8.配置相关信息
-文件信息
redis-benchmark: 性能测试工具
redis-check-aof:修复有问题的 AOF 文件
redis-check-dump:修复有问题的 dump.rdb 文件
redis-sentinel:Redis集群用
redis-server:Redis服务器启动命令
redis-cli:客户端,操作入口
-启动配置
--前台启动:redis-server
注:命令行窗口关闭,服务就会停止
--后台启动:
1.打开redic.conf文件
2.修改配置:daemonize 的 no 为 yes (128行)
3.启动Redis:redis-server /opt/redis-x.x.x/redis.conf
--客户端访问:
redis-cli -p 6379(Redis端口)
-关闭Redis
redis-cli -p 6379(端口) shutdown
Redis的5大基本数据类型
key键
keys * 查看当前库的所有key ,*后面跟数据会模糊查询 exists key 判断key是否存在 type key 查看key的数据类型 del key 删除一个key unlink key 根据vlaue进行非阻塞删除 expire key 10 设置key 的过期时间为10s ttl key 查看key的剩余过期时间,-1:永不过期,-2:已过期 select [1] 切换数据库 dbsize 查看当前数据库的key的数量 flushdb 清空当前库 flushall 清空所有库
String(字符串)
数据结构
String是Redis最基本的类型,与Java的map较为相似,区别在于Java的value是任意类型,而redis中String的value只能是字符串类型。String类型创建的时候会预分配内存且内存空间大于实际的字符串长度,当内存小于1MB时,扩容为现有空间的一倍,空间占有大于等于1MB时,每次扩容为固定的1MB。1一个字符串的value大小最大为512MB。
常用命令
set <key><value> 添加一个键值对
get <key> 获取一个键的Value
setnx <key><value> key不存在才存储
strlen <key> 获取key的value的长度
incr <key> 将key的value原子性操作+1 只能是数字类型才行
decr <key> 将key的value原子性操作-1 只能是数字类型才行
append <key> <value> 给key的value追加字符
incrby <key> <num> 给key的value原子性操作+num 只能数字类型才行
decrby <key> <num> 给key的value原子性操作-num 只能数字类型才行
mset <key1><value1><key2><value2> 同时设置多个key-value
mget <key1><key2> 同时获取多个key的value
msetnx <key1><value1><key2><value2> 同时设置多个key-value,前提是key不存在
getrange <key> <start> <end> 获取key的value的 start - end 位置的字符
setrange <key> <start> <value> 覆盖value 的 start 位置后面的字符
setex <key> <time> 设置key的过期时间
List(列表)
数据结构
List列表时简单的字符串列表(单键多值),按照顺序从最左/最右插入指定的值,并且按照插入的顺序排值。其底层时一个双向链表,对两端的操作性能很高,通过下标索引的效率较慢。List的结构为快速列表(quickList),夸苏列表是由ziplist(压缩列表)和链表组成的。在数据较少的情况下会使用压缩列表(其元素是紧挨着存储的,分配到是一块连续的内存),当数据量较多的是否会改为quicklist(快速列表)。
quicklists=ziplist+双向指针+ziplist+……(将多个压缩列表通过双向指针串联起来,提高了插入和删除性能的同时也避免了冗余空间)
常用命令
lpush/rpush <key><value><value> 从左/右插入一个或多个值、
lpop/rpop <key> <count> 从左/右边开始吐出count个值,值在健在,值光键亡(相当于删除)
rpoplpush <key1><key2> 从key1的右边吐出一个值插入在key2的最左边
lrange <key> <stat> <stop> 截取 stat - stop 下标之间的所有值(左->右) (不会删除)
lrange <key> 0 -1 0左边第一个值,-1右边第一个值 0-1全部值
lindex <key> <index> 获取列表中指定下标的值(左->右) (不会删除值)
llen <key> 获取列表长度
linsert <key> before <value><newvalue> 在最左边的value后面插入值(左->右)
lrem <key><n><value> 从左边删除n个value
lset <key> <index> <value> 替换列表index下标的值
更多推荐
Redis概念理解
发布评论