标签

Honeymoon - Thomas Ng

归档

近期文章

Redis 笔记

本文环境 Redis6.0 不懂的可以评论或联系我邮箱:owen@owenzhang.com 著作权归OwenZhang所有。商业转载请联系OwenZhang获得授权,非商业转载请注明出处。

设置密码,外网访问

sudo vim /etc/redis/redis.conf

protected-mode yes
bind 0.0.0.0
maxclients 3
requirepass 123password

sudo systemctl restart redis

Redis锁

Redis::sadd($key, $str);

//Redis锁
RedProduct::lock($red_name);
RedProduct::unlock($red_name);

严禁使用redis的keys命令

线上严禁使用redis的keys命令 keys checkvariantprefix:*
flushdb 删除Redis中当前所在数据库中的所有记录
flushall 删除Redis中所有数据库中的所有记录

redis 连接命令

redis-cli -h host -p port -a password

redis-cli

SELECT 3

LRANGE {redis-queue}-waitingconverter_list 0 98

//key 设置过期时间
EXPIRE mykey 10

//redis类型介绍
$key = 'Kaijang:lottery:frequency:simplehtml:' . $lotteryType;

字符串

//添加有效期时间 redisSet 
Redis::getInstance()->redisSet($key, json_encode($data), 60*10);
//命令将 key 中储存的数字值增一
Redis::getInstance()->redisIncre($redisKey);
//获取数据 redisGet 
$lotterylRedis = Redis::getInstance()->redisGet($key);

有序集合

//添加 自增1redisZincrby  小于次数,就增加金豆,并且自增+1 
Redis::getInstance()->redisZincrby($key, 1, '1234');
//添加 自减2redisZincrby  小于次数,就增加金豆,并且自减-2
Redis::getInstance()->redisZincrby($key, -2, '1234');

//获取有序集合的分数redisZscore 
$number = Redis::getInstance()->redisZscore($key, '1234');
//获取从0到-1到数据(全部数据)列表 
$list = Redis::getInstance()->redisZRevRange($key, 0, -1);//只返回分数
$list = Redis::getInstance()->redisZRevRange($key, 0, -1, ['WITHSCORES' => true]);//返回分数和权重
//只展示显示每页数量,分页处理
$result = array_slice($list, ($pageNo - 1) * $pageCount, $pageCount);

哈希

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。 Redis 中每个 hash 可以存储 232 – 1 键值对(40多亿)。 value最大为64字节

//Redis 哈希(Hash)
//Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash //特别适合用于存储对象。
//Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
//添加/修改 Redis::hset('testList', 1001, '内容1');
//添加成功返回1,修改成功返回0
//删除 Redis::hdel('testList', 1001);
//获取一个 Redis::hget('testList', 1002);
//获取全部 Redis::hgetall('testList');

//添加自增1 并返回分数值  
$trueView = appluckycommonRedis::getInstance()->redisHincre(_REDIS_BLOG_VIEWS, $blogId);
//获取指定多个是分数值 
$blogIds =[706,709];
$views = Redis::getInstance()->redisHMgetNum('343_server:blog:blog_views', $blogIds);

//添加设置哈希列表值
 $eventRedisInfo = [
   $eventId => json_encode($eventInfo),
 ];
 Redis::getInstance()->redisHMSet($redisKey, $eventRedisInfo);
//获取指定多个是哈希列表值
$basketIdArr = array_unique($basketIdArr);
$redisKey = "Kaijiang:basketball:eventList";
$basketballEventRedisList = Redis::getInstance()->redisHMget($redisKey, $basketIdArr);

//删除数据redisDel
Redis::getInstance()->redisDel($key);
//删除指定分数userId数据redisZrem
Redis::getInstance()->redisZrem($key, $userId);

//Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash //特别适合用于存储对象。
//Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
//添加 Redis::hset('testList', 1001, '内容1');
//修改 Redis::hset('testList', 1001, '内容1001');
//删除 Redis::hdel('testList', 1001);
//获取一个 Redis::hget('testList', 1002);
//获取全部 Redis::hgetall('testList');

Setnx 命令

Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。 redis 127.0.0.1:6379> SETNX KEY_NAME VALUE

返回值:设置成功,返回 1 。 设置失败,返回 0 。


redis> EXISTS job # job 不存在 (integer) 0

redis> SETNX job "programmer" # job 设置成功 (integer) 1

redis> SETNX job "code-farmer" # 尝试覆盖 job ,失败 (integer) 0

redis> GET job # 没有被覆盖 "programmer"

Redis容量预估工具

Redis容量预估工具 http://www.redis.cn/redis_memory/

查看redis内存使用情况

info memory

相关解释 -human后缀表示以人类可读的方式展示,也就是后面带单位了 used_memory:1210776 #已经内存使用的大小 used_memory_human:1.15M # 带单位展示 used_memory_rss:7802880 # 从操作系统角度看redis内存占用多少 used_memory_rss_human:7.44M # 带单位展示 maxmemory:1073741824 # 最大内存大小 maxmemory_human:1.00G # 带单位展示

设置内存大小

  1. 编辑配置文件,本文的配置位置在/etc/redis/6379.conf,这是使用了utils工具包的install_server.sh脚本安装成为系统服务,可以使用systemctl start | restart | stop命令操作redis服务,同时也是配置开机启动。
vim /etc/redis/6379.conf
# 找到maxmemory,设置想要的大小即可,默认单位为 byte,可以设置为mb或GB
maxmemory 1GB #设置为1GB大小
  1. 重启redis
systemctl restart redis_6379
# 这是服务名是install_server.sh脚本起的,可以通过`chkconfig --list`查看到所有的系统服务,
# 第一列是服务名,这里不列出来了,

Buy me a cup of coffee 🙂

觉得对你有帮助,就给我打赏吧,谢谢!

微信赞赏码链接,点击跳转:

Redis 笔记插图