您的位置:首页 > 数据库 > Redis

Redis笔记

2018-07-30 08:03 95 查看

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安装部署

1Redis下载、编译、安装

下载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

4Redis客户端使用

<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

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: