title: 【学习之路】Redis学习
draft: true
tags:
- 学习之路
- Redis
categories: - 中间件
- Redis
cover: ‘https://cdn.jsdelivr.net/gh/codezixuan/Blog_Images/Redis/redislogo.png‘
description: Redis学习,Redis数据类型学习
abbrlink: 267a94ed
date: 2021-03-11 16:13:30
Rides 永远的HelloWorld
- 先cd到redis目录下
- 输入
redis-server
出现Redis的Logo代表启动成功
修改配置文件让Redis再后台运行
- 修改配置文件前请先备份
- 再Redis目录下使用
vim redis.conf
将daemonize no改为yes
再启动redis服务输入redis-cli -p 6379
输入ping会返回PONG代表链接成功
ping.png)
- 输入
set key1 hellow
我们就往redis存入了第一个值输入get key1
就会返回刚刚存入的值
key.png)
Redis基础知识
- Redis是单进程
- Redis默认是16个数据库,类似数组下标从0开始,初始默认使用0号库
- 使用
select 数据库下标
切换数据库 - 使用
Dbsize
查看当前数据库key的数量 - 使用
Flushdb
清空当前库 - 使用
Flushall
清空全部库 - 统一密码管理,16个库是同样的密码,要么都OK要么都链接不上
- Redis的索引都是从0开始
- Redis默认端口是6379
Redis数据类型
Redis五大数据类型
- String 字符串
- Hash 哈希、类似java中的Map
- List 列表
- Set 集合
- Zset 有序集合
Redis键(key)
- keys *:查看当前数据的所有key
- exists key的名字:判断key是否存在
- move key 数据库下标:将这个key移到另外一个库当前库的key就被移除
- expire key 秒:为给定的key设置过期时间
- tll key:查看key还有多少秒过期,-1表示永不过期,-2表示已经过期
- type key:查看key是什么类型
Redis字符串(String)
- del key:删除当前key
- append key:往当前key后追加字符
- strlen key:查看当前key长度
- Incr key:让当前key加1 必须要是数字
- decr key:让当前key减1 必须是数字
- incrby key 需要加的数:让当前key加N 必须是数字
- decrby key 需要减的数:让当前key减N 必须是数字
- del key:删除当前key
- append key:往当前key后追加字符
- strlen key:查看当前key长度
- Incr key:让当前key加1
- decr key:让当前key减1
- incrby key 需要加的数:让当前key加N
- decrby key 需要减的数:让当前key减N
- getrange key 0 3:从0开始截取到3号下标 填0 -1为截取全部
- setrange key 0 xxx:从0号索引开始添加xxx字符0号索引的字符会被覆盖
- setex key 秒 值:指定一个key可以存活几秒
- setnx k11 v11:如果key存在就不会插入
- mset k1 v1 k2 v2:可以同时插入多个key
- mget k1 v1 k2 v2:同时获取多个key
- msetnx:同时添加多个值如果有相同那么就不会添加
- getset:先get再set
Redis列表(List)
- Lpush:从左往右插入(倒叙)
- Rpush:从右往左插入(正序)
- Lrange:从左往右遍历
- Lpop:从左往右顶出
- Rpop:从右往左顶出
- lindex 按照索引下标获得元素(从上到下)
- Ltem key 删N个value
- Ltrim key 开始index 结束index,截取指定范围的值后再付给key
- rpoplpush:源列表 目的列表:将源列表的值弹出添加到目的列表行首
- lset key index value:替换key当前索引的值
- linsert key before x oracle:在key中x值的后面插入一个oracle,使用after在之前插入
性能总结
Redis集合(Set)
- sadd set 1 2 3
- smembers set:查看当前集合的内容
- sismember set:查看当前集合是否有这个值没有返回0
- scard:获取集合里元素个数
- srem key value:删除集合中的元素
- srandmember key 随机出来的个数:在一个集合里随机几个数
- spop key:随机出栈
- smove key1 key2 在key1里的某个值:将key1里的某个值付给key2
数学集合类
- 差集:sdiff
- 交集:sinter
- 并集:sunion
Rides哈希(Hash)
- hset user id 11:添加key
- hget user id:获取key
- hmset user id 11 name zhangsan:添加多个key
- hmget user id name:获取多个key
- hgetall user:获取全部key
- hdel user name:删除key
- hlen user:key的长度
- hexists key key:判断在key里面某个值的key
- hkeys:获取一个key的所有key
- hvals:获取一个key中所有key的value
- hincrby user age 2:给一个key中key的value自增2
- hincrbyfloat user score 2.1:给一个key中key的value自增2.1
- hsetnx user age 18:同时添加多个值的时候就不会重复添加
Redis有序集合Zset(sorted set)
- zadd
- zrange zeset01 0 -1:获取所有value 添加withscores会显示所有key和value
- zrangebyscore key 开始score 结束score:可以添加
limit 开始下标 多少步
截取 - zrem key 某score下对应的value值,作用是删除元素
- zcard zset01:获取长度
- zcount key score区间:用来判断value与value区间有多少个值
- zrank key values值:获得下标值
- zscore key key:对应值,获得value
- zrevrank key values值:作用是逆序获得下标值
- zrevrangebyscore key 结束score 开始score