redis-server.exe redis.windows.conf 启动代码
systemctl start redis
# systemctl start redis_6579
或者
# service redis_6579 start
启动的三种方式
/usr/local/redis/bin/redis-cli 开启地址
重新开启cmd 进入程序 DAPP文件夹
redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456
redis配置文件路径在/etc/redis/redis.conf
mysql 配置文件路径/etc/mysql/mysql.conf.d/mysqld.cnf
修改配置钱线备份
sudo cp /etc/redis/redis.conf/etc/redis/redis_bak.conf
sudo chown redis:redis /etc/redis/redis_bak.conf
key命名规范
1,key值不宜过长,消耗内存,查找这类值成本过高
2,不宜过短,可读性较差
值一个字符串类型的值最多能储存512M内容
set key value nx ex
nx表示不存在则则储存
ex 10秒过期时间
单个KEY的操作
strlen key 获取key储存值的长度
getrange key start stop 获取指定范围切片内容
setrange key index value 从索引开始,用value替换原来的内容,返回最新长度
批量添加key
mset key1 value1 key2 value2 key3 value3
批量获取key值
mget key1 key2 key3
数值的操作
incrby key 步长 将key增加指定步长
decrby key 步长 将key减少指定步长
incr key:+1操作
decr key:-1操作
incrbyfloat key step
缓存
说明:将mysql中的数据存储到redis字符串类型中
并发计数-点赞/秒杀
说明:通过redis单进程的特点,由redis负责激素并发问题转为串行问题
带有效期的验证码
说明:借助过期时间,存放验证码;到后期自动消亡
过期时间设置两种方式
1,现在
set key value ex 3
2,早期方式
set key value
expire key 5 秒
pexpire key 5 毫秒
检查过期时间
ttl key -通用命令
-1 代表当前key没有过期时间
>0 代表当前key的剩余存活时间
-2 代表当前key不存在
删除机制
每个redis数据库中,都会有一个特殊的容器负责存储带有过期时间内的key以及对它的过期时间,这个容器称为‘过期字典’
顶对过期字典中的key,redis结合 惰性删除和定期删除 两大机制
有效删除过期数据
惰性删除,当调用Key时,检查是否过期,如果过期则删除
定期删除 主动定期扫描过期字典中的数据,检查是否过期
最后一道保险-maxmemory配置选项
一旦内存量超过最大限制,redis会执行命令时触发内存淘汰
数据类型,列表
1,元素时字符串类型
2,别表头尾增删快,中间增删慢,增删元素是常态
3,元素可重复
4,最多包含2的32次方-1个元素
5,所应同python列表
左右插入元素 返回list长度 从尾部压入列表/从头部压入列表
rpush/lpush key value1 value2
查看列表中的元素
lrange key start stop
获取列表长度
llenkey
插入数据
rpoplpush src dst 一个元素从一个列表到另一个列表
从列表src尾部弹出1个元素,压入到列表dst的头部
返回:被弹出的元素
LINSERT KEY AFTER|BEFORE VALUE NEWVALUE
说明:在列表指定元素后/前插入元素
返回
1,如果命令执行成功,返回列表长度
2,如果没有找到pivot返回-1
3,如果key不存在或者为空列表,返回0
删除常用命令
从列表头部弹出一个元素
lpop key
从列表尾部弹出1个元素
rpop key
列表头部,阻塞弹出,列表为空时阻塞
brpop key timeout brpop mam 5 阻塞
关于blpop 和brpop说明
1,如果弹出的列表不存在或者为空就会阻塞
2,超时时间设置为0,就时永久阻塞,指导有数据弹出
3,如果多个客服端阻塞再同一个列表上,使用First in first service 原则 先到先服务
lrem key count value
说明:删除指定元素
count>0表示从头部开始向尾部搜索,一处与value相等的元素,数量为count
count<0:表示从尾部开始想表头搜索,移除与value相等的元素,数量为count
count=0:移除表中所有与value相等的值
返回:被移除元素的数量
更新
lset key index newvalue
说明:设置list指定的索引的值
pyredis 操作redis
import redis
1,创建链接对象
r=redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456')
2,链接对象.redis命令即可
r.set(key,value)
位图 ascill🐎操作
setbit 命令
说明:设置某位置上的二进制值
语法:setbit key offset value
参数:offset -偏移量从0开始
两种情况
存在key则满足长度要求,直接修改当前bit位
在原有val上初始化最小字节数的bit位
不存在则初始化最小字节数的bit位默认补0
getbit 获取某一位上的值
getbit key offset
bitcount 统计键所对应的值中有多少个1
bitcount key start end
应用场景用户登录年数满多少将二进制位置为1
哈希值储存
1,由field和关联的value组成的键值对
2,field和value是字符串类型
3,一个hash中最多包含2的32次方减一个键值对
优点
1,节约内存空间-特定条件下【1,字段小于512个,2:value不能超过64字节】
2,可按需取字段值
缺点
1,使用过期键功能只能对键进行过期操作,而不能对散列操作的字段进行国企操作
2,存储消耗大约字符串结构
设置单个字段
hset key field value
hsetnx key field value
设置多个字段
hmset key field value field value
返回字段个数
hlen key
判断字段是否存在(不存在返回0)
hexists key field
返回字段值
hget key field
返回多个字段值
hmget key field field
返回所有的键值对
hgetall key
删除字段
hdel h1 name
更新一条数据的属性,没有则新建
hset(name,key,value)
读取这条数据的指定属性,返回字符串类型
hget(name,key)
批量更新数据(没有则新建)属性,参数位字典
hmset(name,mapping)
批量读取数据(没有则新建)属性
hmget(name,keys)
应用场景
原理基于hash压缩特点和字段可计数
用维度统计
统计数包括:关注数,粉丝数,喜欢商品数,发帖数用户位KEY 不同维度位FIELD,VALUE为统计数
比如关注了5人
hset user:100000 fans 5
hincrby user :10000 fans1
缓存-redis+mysql+hash 组合使用
原理hash可以按需去除字段数据,也比较适合做缓存
用户想要查询个人数据
1,到redis缓存中查询个人数据
2,redis中查询不到,到mysql查询,并缓存到redis
3,再次查询个人信息
F函数能有效解决高并发的问题,原始基础上能(如多人点赞的场景)就好想加了锁
转载:https://blog.csdn.net/Steven_yang_1/article/details/128742390