Redis学习笔记

安装redis:
1、找到redis 的安装文件解压到opt下
   tar -zxvf redis.3.0.tar.gz -C /opt


2、执行make安装redis
如果没有安装gcc首先安装gcc:yum install gcc
使用gcc -v 命令检查gcc版本
3、运行make命令还报错
运行 make distclean 后再执行make
make install


4、讲redis的配置文件备份到myredis文件下
  mkdir myredis
  cp redis.conf /myredis


5、打开编辑redis配置文件
   是否已后台程序运行
   daemonize yes


查看后台redis服务是否启动
ps -ef|grep redis
lsof -i :6379


cd /usr/local/bin
启动 redis
redis-server /myredis/redis.conf
redis-cli -p 6379
ping
------------------------------
select 0-15 切换redis库,总共16个。
dbsize 查看当前数据库的key的数量
keys * 查看所有key
keys k? 查看已k开头的key


flushdb 清除当前库所以数据
flushall 清除所有库的所有数据 


----------------------------------
redis的五大数据类型:
1、String(字符串)
2、Hash(哈希,类似java里的map)
3、List(列表)
4、Set(集合)
5、Zset(sorted set:有序集合)
----------------------------------
redis键key的操作:
exists key的名字,判断某个key是否存在
move key db :把key移动到其他库,当前库就没有了
expire key 秒钟:为给定的key设置过期时间
ttl key:查看还有多少秒过期,-1表示永不过期,-2表示已过期
type key:查看你的key是什么类型


set k1 xx,设置重复的key,值会被覆盖


redis字符串(String):
set/get/del/append/strlen
Incr/decr/incrby/decrby,一定要是数字才能进行加减
getrange/setrange
setex(set with expire)键秒值/setnx(set if not exist)
mset/mget/msetnx


set k2 2
incr k2
incrby k2 3
decrby k2 2
getrange k1 0 3
setrange k1 0 xxx:从0位开始设置值为xxx
setex k3 10 v3:设置k3有效期为10秒值为v3
setnx k1 v1:如果k1不存在就设置值为v1
mset k1 v1 k2 v2 k3 v3
mget k1 k2 k3
msetnx k1 v1 k4 v4:如果有一个已经存在那么不会设置成功


redis列表(List):
lpush/rpush/lrange
lpop/rpop
lindex:按照索引下标获得元素(从上到下)
llen:返回list长度
lrem key 删除N个value
ltrim key 开始index 结束index,截取指定范围的值再赋给key
rpoplpush 源列表 目的列表
lset key index value:将一个下标的值改变
linsert key before/after 值1 值2




lpush list01 1 2 3 4 5
lrange 0 -1,从上到下显示为 5 4 3 2 1
rpush list02 1 2 3 4 5
lrange 0 -1,从上到下显示为 1 2 3 4 5
lpop list01:出去就是5
lpop list02:出去就是1
rpop list01:出去就是1
rpop list02:出去就是5
lindex list01 2:得到2
lindex list02 2:得到4
llen list01


rpush list03 1 1 1 2 2 2 3 3 3 4 4 4 4 5 5 6 7
lrem list03 2 3:删除list03中的2个3


lpush list01 1 2 3 4 5 6 7 8 9 10
ltrim list01 0 4
lrange list01 0 -1


lset list01 0 x:将list01下标为0的值改成x


linsert list01 before x java




redis集合(Set):
sadd/smembers/sismenber
scard:获取集合里面元素个数
srem key value 删除集合中的元素
srandmember key 某个整数(随机出几个数)
spop key 随机出栈
smove key1 key2 在key1里某个值 作用是将key1里的某个值赋给key2
sdiff 差集
sinter 交集
sunion 并集


sadd set01 1 1 2 2 3 3
smenbers set01
sismenber set01 1
scard set01
srem set01 3
srandmember set01 2
spop set01
smove set01 set02 1:将set01中的1移走赋给set02
sdiff set01 set02:set01中的值不在set02中


redis哈希(Hash):
KV模式不变,但V是一个键值对
hset/hget/hmset/hmget/hgetall/hdel
hlen
hexists 在key里面的某个值的key
hkeys/hvals
hincrby/hincrbyfloat
hsetnx


hset user id 10
hget user id
hmset user id 11 name xiaoxie age 26
hmget user id name age
hgetall user
hdel user id:删掉user中的id
hlen user
hexits user name
hkeys user
hincrby user age 2
hvals user
hsetnx user email 123@126.com


redis有序集合Zset(sorted set):
zadd/zrange
zrangebyscore key 开始score 结束score,(不包含,limit 截取
zrem key 某score下对应的value值删除
zcard/zcount key score区间/zrank key values值,获得下标值/zscore key对应值,获得分数
zrevrank key values值,作用是逆序获得下标值
zrevrange
zrevrangebyscore key


zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
zrange zset01 0 -1
zrange zset01 0 -1 withscores
zrangebyscore zset01 60 90
zrangebyscore zset01 60 (90
zrangebyscore zset01 60 90 limit 2 2,从返回值中下标2开始截取2个
zrem zset01 v5
zcard zset01
zcount zset01 60 90
zrank zset01 v4
zscore zset01 v4
zrevrank zset01 v4
zrevrange zset01 0 -1
zrevrangebyscore zset01 90 60
-----------------------------------
redis配置文件:
redis默认不需要输入密码。
config get requirepass
config get dir
config set requirepass "123456" 设置redis初始密码
设置密码后访问,需要加上auth 123456即可


limit限制下面
 可以配置缓存过期策略 有6种
1、volatile-lru:使用LRU算法移除key,只对设置了过期时间的键
2、allkeys-lru:使用lru算法移除key
3、volatile-random:在过期集合中移除随机key,只对设置了过期时间的键
4、allkeys-random:移除随机的key
5、volatile-ttl:移除那些ttl值最小的key,即那些最近要过期的key
6、noeviction:不移除,针对写操作。永不过期
---------------------------------------------------
redis的持久化:
RDB:redis database
rdb默认有三种保存方式:
save 900 1 :15分钟有1次改变
save 300 10 :5分钟有10次改变
save 60 10000:1分钟有10000次改变


现实用到的是:
1分钟内改变1万次
5分钟内改变10次
15分钟内改变1次


如果改变一个值需要立即备份,输入:save即可,或者用bgsave。区别是前者是阻塞的。


rdb的恢复,redis重启后会迅速加载配置文件中的xx.rdb,默认是dump.rdb
停止恢复:redis-cli config set save ""


AOF:append only file
aof是以日志的形式来记录每个写操作,将redis执行过的所有写指令记录下来,只许追加文件但不可以改写文件,redis启动之初会读取文件重新构建数据,换而言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。


aof和rdb同时存在,首先会加载aof。


aof有错误,修复aof,redis-check-aof --fix appendonly.aof
------------------------------------------------------
redis的事务:
1、正常执行
multi:开启事务,返回OK
set k1 v1 :输入要执行的命令,返回queued
exec:执行


2、放弃事务
discard:放弃事务


3、全体连坐
开启事务中间的命令如果有错误(error),最后执行操作都会失效


4、冤头债主
执行的命令能加入队列,但是在执行中却报错。该条操作不影响其他操作
如:set k1 aa
muti
incr k1
set k2 bb
set k3 cc
get k3
exec


5、watch监控
set balance 100
set debt 0
watch balance
muti
decrby balance 20
incrby debt 20
exec
-----------------------------------
redis主从复制:
主机写,从机读。
1、配从(库)不配主(库)
2、从库配置:slaveof 主库IP 主库端口
3、修改配置文件细节操作
a、拷贝多个redis.conf
b、开启daemonize yes
c、pid文件名字
d、指定端口
e、log文件名字
f、dump.rdb名字
4、常用:
a、一主二从
info replication
从机输入slaveof 127.0.0.1 6379
从机只能读不能写。
主机挂了,从机原地待命。主机复活依旧原样。
从机挂了,复活变成主机,要想变成从机需重新连接
b、薪火相传
一个slave可以是下一个slave的master,slave同样可以接受 其它slaves的连接和同步请求,那么该slave作为链条中下一 个的master,可以有效减轻master的写压力。中途变更转向: 会清除之前的数据,重新建立拷贝最新的

c、反客为主
主机挂了,从机输入slaveof no one上位成为主机。以前主 机复活成为一个光杆司令


5、哨兵模式
其实就是反客为主的自动版。
自定义的/myredis目录下创建sentinel.conf文件,名字不能错。
填写内容,sentinel monitor 被监控数据库名字(自己起名字)  127.0.0.1 6379 1 最后一个1表示主机挂掉后salve投票看谁接替成为 主机,得票数多少后成为主机,原主机复活成为从机跟从新领导。
touch sentinel.conf
sentinel monitor host6379 127.0.0.1 6379 1
启动哨兵:redis-sentinel /myredis/sentinel.conf













  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值