Redis笔记
Redis笔记
- Redis概述
1、Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的应用程序的完美解决方案。
2、Redis从它的许多竞争继承来的三个主要特点:
1)Redis数据库完全在内存中,使用磁盘仅用于持久性。
2)相比许多键值数据存储,Redis拥有一套较为丰富的数据类型。String,List,set,map,sortSet
3)Redis可以将数据复制到任意数量的从服务器。
优势:
1、异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。
2、支持丰富的数据类型:Redis支持字符串、列表、集合、有序集合散列数据类型,这使得它非常容易解决各种各样的问题。
3、操作都是原子性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。----计数器
4、多功能实用工具:Redis是一个多实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅),任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数等。
- Redis 安装
1.解压缩redis-2.8.3.tar.gz
2.make
3.make install
4.启动服务redis-server redis.conf
5.测试服务安装,运行客户端:redis-cli
6.主从配置
修改从服务器的redis.conf,添加slaveof 192.168.137.18 6379
运行过程中,通过redis-cli中命令可以动态不停机切换主从
主:slaveof no one
从:slaveof 192.168.137.19 6379
7.配置从的持久化aof方式:
关闭自动snapshot:
#save 900 1
#save 300 10
#save 60 10000
开启snapshot:
appendonly yes
此处可以动态在redis-cli中不停机运行命令:CONFIG SET APPENDONLY YES
- Redis安装部署
1、Redis下载、编译、安装
下载redis3.0.5
wget http://download.redis.io/releases/redis-3.0.5.tar.gz
解压文件,并创建软件连接
tar -zxvf redis-3.0.5.tar.gz -C /export/servers/
ln –s redis-3.0.5/ redis
编译redis源码
cd /export/servers/redis
make(先安装gcc)
将编译后的可执行文件安装到/user/local/redis
make PREFIX=/usr/local/redis install
2、启动Redis
启动方式一:Redis前台默认启动
进入redis安装目录,并启动Redis服务
cd /usr/local/redis/bin/
./redis-server
启动方式二:Redis使用配置文件启动
拷贝源码中的redis.conf文件到redis的安装目录
cp /export/servers/redis/redis.conf /usr/local/redis/
修改redis.conf的属性
daemonize no è daemonize yes
启动redis服务
cd /usr/local/redis
bin/redis-server ./redis.conf
3、日志文件及持久化文件配置
修改生成默认日志文件位置
logfile "/usr/local/redis/logs/redis.log"
配置持久化文件存放位置
dir /usr/local/redis/data/redisData
4、Redis客户端使用
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
- Redis持久化
有两种持久化方案:RDB和AOF
1) RDB方式按照一定的时间间隔对数据集创建基于时间点的快照。
2)AOF方式记录Server收到的写操作到日志文件,在Server重启时通过回放这些写操作来重建数据集。该方式类似于MySQL中基于语句格式的binlog。当日志变大时Redis可在后台重写日志。
AOF持久化配置
1)修改redis.config配置文件,找到appendonly。默认是appendonly no。改成appendonly yes
2)再找到appendfsync 。默认是 appendfsync everysec
appendfsync always
#每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
appendfsync everysec
#每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐
appendfsync no
#完全依赖os,性能最好,持久化没保证
RDB持久化配置
默认情况下,Redis保存数据集快照到磁盘,名为dump.rdb的二进制文件。可以设置让Redis在N秒内至少有M次数据集改动时保存数据集,或者你也可以手动调用SAVE或者BGSAVE命令。
例如,这个配置会让Redis在每个60秒内至少有1000次键改动时自动转储数据集到磁盘
save 60 1000
- 常用命令
连接操作相关的命令
- quit:关闭连接(connection)
- auth:简单密码认证
持久化
- save:将数据同步保存到磁盘
- bgsave:将数据异步保存到磁盘
- lastsave:返回上次成功将数据保存到磁盘的Unix时戳
- shundown:将数据同步保存到磁盘,然后关闭服务
远程服务控制
- info:提供服务器的信息和统计
- monitor:实时转储收到的请求
- slaveof:改变复制策略设置
- config:在运行时配置Redis服务器
对value操作的命令
- exists(key):确认一个key是否存在
- del(key):删除一个key
- type(key):返回值的类型
- keys(pattern):返回满足给定pattern的所有key
- randomkey:随机返回key空间的一个
- keyrename(oldname, newname):重命名key
- dbsize:返回当前数据库中key的数目
- expire:设定一个key的活动时间(s)
- ttl:获得一个key的活动时间
- select(index):按索引查询
- move(key, dbindex):移动当前数据库中的key到dbindex数据库
- flushdb:删除当前选择数据库中的所有key
- flushall:删除所有数据库中的所有key
对String操作的命令
- set(key, value):给数据库中名称为key的string赋予值value
- get(key):返回数据库中名称为key的string的value
- getset(key, value):返回旧值,设置新值,旧值没有返回nil
- mget(key1, key2,…, key N):返回库中多个string的value
- setnx(key, value):[SET if Not eXists」的缩写,也就是只有不存在的时候才设置,可以利用它来实现锁的效果
- setex(key, time, value):向库中添加string,设定过期时间time(秒)
- mset(key N, value N):批量设置多个string的值
- msetnx(key N, value N):如果所有名称为key i的string都不存在
- incr(key):名称为key的string增1操作
- incrby(key, integer):名称为key的string增加integer
- decr(key):名称为key的string减1操作
- decrby(key, integer):名称为key的string减少integer
- append(key, value):名称为key的string的值附加value
- substr(key, start, end):返回名称为key的string的value的子串
对List操作的命令
- rpush(key, value):在名称为key的list尾添加一个值为value的元素
- lpush(key, value):在名称为key的list头添加一个值为value的 元素
- llen(key):返回名称为key的list的长度
- lrange(key, start, end):返回名称为key的list中start至end之间的元素
- ltrim(key, start, end):截取名称为key的list
- lindex(key, index):返回名称为key的list中index位置的元素
- lset(key, index, value):给名称为key的list中index位置的元素赋值
- lrem(key, count, value):删除count个key的list中值为value的元素
- lpop(key):返回并删除名称为key的list中的首元素
- rpop(key):返回并删除名称为key的list中的尾元素
- blpop(key1, key2,… key N, timeout):lpop命令的block版本。
- brpop(key1, key2,… key N, timeout):rpop的block版本。
- rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
对Set操作的命令
- sadd(key, member):向名称为key的set中添加元素member
- srem(key, member) :删除名称为key的set中的元素member
- spop(key) :随机返回并删除名称为key的set中一个元素
- smove(srckey, dstkey, member) :移到集合元素
- scard(key) :返回名称为key的set的基数
- sismember(key, member) :member是否是名称为key的set的元素
- sinter(key1, key2,…key N) :求交集
- sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
- sunion(key1, (keys)) :求并集
- sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
- sdiff(key1, (keys)) :求差集
- sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
- smembers(key) :返回名称为key的set的所有元素
- srandmember(key) :随机返回名称为key的set的一个元素
对Hash操作的命令
- hset(key, field, value):向名称为key的hash中添加元素field
- hget(key, field):返回名称为key的hash中field对应的value
- hmget(key, (fields)):返回名称为key的hash中field i对应的value
- hmset(key, (fields)):向名称为key的hash中添加元素field
- hincrby(key, field, integer):将名称为key的hash中field的value增加integer
- hexists(key, field):名称为key的hash中是否存在键为field的域
- hdel(key, field):删除名称为key的hash中键为field的域
- hlen(key):返回名称为key的hash中元素个数
- hkeys(key):返回名称为key的hash中所有键
- hvals(key):返回名称为key的hash中所有键对应的value
- hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value
- Redis 学习笔记
- redis 笔记05 Sentinel、集群
- redis 学习笔记三(队列功能)
- PHP中使用Redis长连接笔记
- redis 学习笔记(3)-master/slave(主/从模式)
- redis学习笔记
- redis源码分析(八)、redis数据结构之压缩ziplist--------ziplist.c ziplist.h学习笔记
- redis命令学习笔记
- redis配置笔记
- 二 redis学习笔记之数据类型
- [笔记]使用Go语言Redigo包在Docker容器内连接Redis容器的方法
- Redis 学习笔记六 Java使用redis(测试环境:Win7)
- Redis 性能调优相关笔记
- redis学习笔记
- Redis学习笔记二:Redis的常用操作命令
- Redis总结笔记(一):安装和常用命令
- Redis系列学习笔记16 服务器配置
- Redis的AOF持久化-Redis学习笔记四
- 【Redis笔记-1】Redis Desktop Manager On Mac
- Redis 笔记与总结3 list 类型