Redis
2024-05-22 16:45:37 9 举报
AI智能生成
redis 笔记
作者其他创作
大纲/内容
1、Redis 支持持久化而 Memcached 不支持
2、Redis 可以存储五种复杂数据类型,而Memcached 只可以存储字符串类型数据
3、Redis 使用的是单线程+多路IO复用, 而Memcached 是多线程+锁
Redis与 Memcached 的区别
1、查询最新n个数据 : 通过list 实现按照自然排序的数据
2、排行榜: 利用zset 实现
3、时效性的数据,比如手机验证码 : Expire 过期
4、计数器,秒杀 : 原子性,自增方法INCR、DECR
5、去除大量数据中的重复数据 : 利用Set 集合
6、构建队列 : 利用 list 集合
7、发布订阅消息系统 : pub/sub 模式
Redis 应用场景
redis-server /配置文件路径 : 开启redis服务
redis-cli -h 127.0.0.1 -p 6379 : 开启客户端访问服务 (exit退出服务)
ping : 链接服务成功输出pong
shutdown : 关闭服务端
keys * :查询当前库的所有键
exists <key> :判断某个键是否存在(1:是,0:否)
type <key> :查看键的类型
del <key> :删除某个键 (1:是,0:否)
expire <key> <second> : 为键值设置过期时间,单位秒
ttl <key> : 查看key还有多少秒过期, -1 表示永不过期 , -2 表示已经过期
dbsize : 查看当前数据库的key的数量
flushdb : 清空当前库
key
get <key> : 查询对应键值
set <key> <value> : 添加键值对
append <key> <value> :将给定的 <value> 的值追加到原值的末尾
strlen <key> : 获取值的长度
setnx <key> <value> :只有在key不存在时才设置key的值
incr <key> :将key中存储的数字值增加1; 只能对数字值操作,如果为空,新增值为1
decr <key> :将key中存储的数字值减1; 只能对数字值操作,如果为空,新增值为 -1
incrby / decrby <key> <步长> :将key中存储的数字值增减。 自定义步长。
mset <key1> <value1> <key2> <value2> ... :同时设置一个或多个 key-value 对
mget <key1> <key2> ... : 同时获取一个或多个value
msetnx <key1> <value1> <key2> <value2> ... : 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
getrange <key> <起始位置> <结束位置> : 获得值的范围,类似java中的substring
setrange <key> <起始位置> <value> : 用 <value> 覆写<key> 所储存的字符串值, 从<起始位置>开始。
String
操作数值
设置多条key-value
操作对应 key 中的值
lpush/rpush <key> <value1> <value2> <value3> .... :从左边/右边插入一个或多个值
lpop/rpop <key> :从左边/右边吐出一个值
rpoplpush <key1> <key2> :从<key1>列表右边吐出一个值,插到<key2>列表左边
lrange <key> <start> <stop> :按照索引下标获得元素(从左到右) lrange <key> 0 -1 获取查询列表的所有元素
lindex <key> <index> :按照索引下标获得元素(从左到右) lindex <key> -1 表示获取列表最后一个元素
llen <key> : 获得列表长度
linsert <key> before/after <value> <newvalue> :在<value>的之前/之后插入<newvalue> 插入值
lrem <key> <n> <value> :删除n个value(n>0 从左往右删,n<0 从右往左删, n=0 删除所有)
List
sadd <key> <value1> <value2> ..... :将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略
smembers <key> :取出该集合的所有值
sismember <key> <value> :判断集合<key>是否为含有该<value>值,有返回1,没有返回0
scard <key> :返回该集合的元素个数
srem <key> <value1> <value2> .... :删除集合中的某个元素
spop <key> : 随机从该集合中吐出一个值
srandmember <key> <n> :随机从该集合中取出n个值,不会从集合中删除
sinter <key1> <key2> :返回两个集合的交集元素
sunion <key1> <key2> :返回两个集合的并集元素
sdiff <key1> <key2> :返回两个集合的差集元素
Set
set 集合特有
hset <key> <field> <value> : 给<key>集合中的 <field>键赋值<value>
hget <key1> <field> :从<key1>集合<field> 取出 value
hmset <key1> <field1> <value1> <field2> <value2>... :批量设置hash的值
hexists key <field> :查看哈希表 key 中,给定域 field 是否存在
hkeys <key> :列出该hash集合的所有field
hvals <key> :列出该hash集合的所有value
hincrby <key> <field> <increment> :为哈希表 key 中的域 field 的值加上增量 increment
hsetnx <key> <field> <value> : 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在
Hash
zadd <key> <score1> <value1> <score2> <value2>... : 将一个或多个 member 元素及其 score 值加入到有序集 key 当
zrange <key> <start> <stop> [WITHSCORES] : 返回有序集 key 中,下标在<start> <stop>之间的元素带WITHSCORES,可以让分数一起和值返回到结果集
zrangebyscore key min max [withscores] [limit offset count] :返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列
zrevrangebyscore key max min [withscores] [limit offset count] : 同上,改为从大到小排列。
zincrby <key> <increment> <value> :为元素的score加上增量
zrem <key> <value> :删除该集合下,指定值的元素
zcount <key> <min> <max> :统计该集合,分数区间内的元素个数
zrank <key> <value> : 返回该值在集合中的排名,从0开始
Zset
Redis命令
includ /路径 :引入其他的redis 配置文件
bind : 绑定ip 地址(默认是 127.0.0.1), 要想远程访问,注释掉bind ,并且关闭保护模式 protected-mode yes —> no
protected-mode : 保护模式,只允许配置的ip 地址访问
tcp-bocklog :一个请求到达后至到接受进程处理前的队列
timeout :一个空闲的客户端维持多少秒会关闭, 0 为永不关闭
TCP keepalive :对访问客户端的一种心跳检测,每个 n 秒检测一次 (官方推荐 60 秒)
daemonize : 是否为后台进程
pidfile : 存放 pid 文件的位置,每个实例会产生一个不同的pid 文件
dir :配置文件路径下存放 (RDB 和 AOF 存放路径)
loglevel :日志级别(debug 调试 - verbose 冗长 - notice 通知 - warning 警告)
logfile :日志文件名
syslog :是否将 redis 日志输送到 linux 系统日志服务中
syslog-ident : 日志的标识
requirepass : 设置密码(登录之后要使用命令 auth \"yourpassword\" 才能访问 redis 数据库)
maxclient : 最大客户连接数
maxmemory : 设置 redis 可以使用的内存量。一旦到达内存使用上限,redis 将会师徒移除内部数据,移除规则可以通过 maxmemory-prlicy 来指定。如果 redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,那么 redis 则会针对那些需要申请内存的指令返回错误信息。 比如 set、lpush
Redis 配置文件
dir 配置文件路径下存放
Redis 持久化(RDB 和 AOF)
info replication : 打印主从复制的相关信息
slaveof <ip> <port> : 成为某个实例的从服务器 (临时的)
slaveof no one 不做任何一台服务器的从服务器
命令
slaveof <masterip> <masterport> :配置主机的 ip 和 端口号
配置主从复制
1、创建 sentinel.conf 文件,编辑 sentinel monitor mymaster 127.0.0.1 6666 1 (最后一个 1 表示几个哨兵认为主服务器宕机了才算宕机)
2、执行 redis-sentinel sentinel.conf
从下线的主服务器的所有从服务器中挑选一个从服务器,将其转换成主服务器。 可以设置优先级按照优先级选择优先级高的,值小的优先级高 (slave-priority 100)
配置哨兵模式
Redis 主从复制
yum install ruby
yum install rubygems
安装ruby环境
拷贝多个redis.conf文件,修改配置文件
1.准备6个实例
2.将6个实例全部启动
3.进入到redis的安装目录的src下 cd /opt/redis/src
4.执行 ./redis-trib.rb create --replicas 1 六个服务器ip : 端口号 (1 表示主服务器与从服务器的个数比例, 这个设置的是1,默认前三个服务器是主服务器,后三个服务器是从服务器)
配置集群
1) 以集群的方式进入客户端: redis-cli -c -p 端口号
2) 通过 cluster nodes 命令查看集群信息
查看集群信息
Redis 集群
Redis
0 条评论
回复 删除
下一页