`
这些年
  • 浏览: 399848 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

redis

 
阅读更多

1:安装

        官网:http://redis.io/download/

        jar:https://github.com/xetorthio/jedis/   (下载源码,使用mvn编译)

         学习:http://redis.readthedocs.org/en/latest/index.html

maven包

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.0.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>

 

 

从官网下载的为源码,须要编译

$ tar xzf redis-2.8.11.tar.gz
$ cd redis-2.8.11
$ make
 make install
$ cd utils
$./install_server

启动和使用(在src目录下)

$./redis-server
注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动.
$ ./redis-server redis.conf
redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了.
比如
$ ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

 或

    /etc/init.d/redis_6379 start |stop

 

redis.conf一些参数

daemonize:是否以后台daemon方式运行
pidfile:pid文件位置
port:监听的端口号
timeout:请求超时时间
loglevel:log信息级别
logfile:log文件位置
databases:开启数据库的数量
save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
rdbcompression:是否使用压缩
dbfilename:数据快照文件名(只是文件名,不包括目录)
dir:数据快照的保存目录(这个是目录)
appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)

 

2:helloword

把编译好的jar放到lib下加入项目(jar为2.5)

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.junit.Before;
import org.junit.Test;

import redis.clients.jedis.Jedis;

public class TestRedis {

	private static final String SERVER_ADDRESS = "192.168.169.128";	//服务器地址
	private static final Integer SERVER_PORT = 6379 ;	//端口
	
	private Jedis jedis ;
	
	@Before
	public void init(){
		jedis = new Jedis(SERVER_ADDRESS, SERVER_PORT); 
	}
	
	
	
	/**
	 * 操作普通键值对
	 */
	@Test
	public void test01(){
		jedis.set("name", "zhoufeng");//存入1个key=name value=zhoufeng的键值对
		String value = jedis.get("name");  	//获取key=name的值
		System.out.println(value);
	}
	
	/**
	 * 操作List
	 */
	@Test
	public void test02(){
		
		//将zhoufeng 加入students数组的结尾,如果该元素是第一个元素,那么会自动创建students数组
		jedis.rpush("students", "zhoufeng");	
		
		//将zhangsan加入到students的末尾
		jedis.lpush("students", "zhangsan");
		
		//移除students的第一个元素
		jedis.lpop("students");
		
		//移除students的最后一个元素
		jedis.rpop("students");
		
		//移除制定的元素,第二个参数表示要移除的个数,因为list中是允许出现重复元素的
		jedis.lrem("student", 1, "zhangsan") ;
		//获取students数组的所有元素
		List <String> students = jedis.lrange("students", 0, -1) ;
		
		System.out.println(students);
	}
	
	/**
	 * 操作Set
	 */
	@Test
	public void test03(){
		//添加元素
		jedis.sadd("teachers", "zhangsan");
		jedis.sadd("teachers", "lisi");
		jedis.sadd("teachers", "wangwu");
		
		//判断Set是否包含制定元素
		Boolean b1 = jedis.sismember("teachers", "wangwu");
		Boolean b2 = jedis.sismember("teachers", "xxxxx");
		System.out.println(b1 + "   " + b2);  
		
		//获取Set内所有的元素
		Set<String> members =  jedis.smembers("teachers");
		Iterator<String> it = members.iterator() ;
		while(it.hasNext()){
			System.out.println(it.next());
		}
		
	//	jedis.sunion(keys...) 可以将多个Set合并成1个并返回合并后的Set
		
	}
	
	/**
	 * 操作带排序功能的Set
	 */
	@Test
	public void test04(){
		//添加元素,会根据第二个参数排序
		jedis.zadd("emps", 5 , "aaa") ;
		jedis.zadd("emps", 1 , "bbbb") ;
		jedis.zadd("emps", 3 , "ccc") ;
		jedis.zadd("emps", 2 , "ddd") ;
		
		//获取所有元素
		Set<String> emps = jedis.zrange("emps", 0, -1) ;
		Iterator<String> it = emps.iterator() ;
		while(it.hasNext()){
			System.out.println(it.next());
		}
	}
	
	/**
	 * 存入对象,使用Map作为对象
	 */
	@Test
	public void test05(){
		Map<String , String > car = new HashMap<String , String >() ;
		car.put("COLOR", "red") ;
		car.put("SIZE", "2T");
		car.put("NO", "京8888");
		//存入对象,使用car:01当作key,是为了方便和其他car区分。比如car:02
		jedis.hmset("car:01", car);
		
		//获取整个对象
		Map<String, String> result = jedis.hgetAll("car:01");	
		Iterator<Entry<String, String>>  it = result.entrySet().iterator();
		while(it.hasNext()){
			Entry<String, String> entry = it.next() ;  
			System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());
		}
		
		//也可以获取制定的属性
		String no = jedis.hget("car:01", "NO") ;
		System.out.println("NO:" + no);
	}
	
}

 

 3:监控(redis live)

      官网:https://github.com/gleicon/RedisLive 

须要安装python环境和一些python包(这里介绍下pip安装python包)

      pip安装:

            下载网址:https://pypi.python.org/pypi/pip/

             解压后使用:python setup.py install 安装

须要安装的包有:

# pip-python install tornado
# pip-python install redis
# pip-python install python-dateutil
# pip-python install argparse

 从github上下载源码:git clone https://github.com/kumarnitin/RedisLive.git

安装完成后配置redis-live.conf文件

 

cd RedisLive/src  

vi redis-live.conf 

 

redis-live.conf配置如下:

 

{
        "RedisServers":
        [ 
                {
                        "server": "127.0.0.1",
                        "port" : 6379
                }
        ],

        "DataStoreType" : "sqlite",

        "RedisStatsServer":
        {
                "server" : "127.0.0.1",
                "port" : 6385
        },
"SqliteStatsStore":{
}
}

 启动服务即可

./redis-monitor.py –duration 120 &
./redis-live.py &

 

帮助:

./redis-live.py --help

 查看端口:netstat -ntpl |grep python

 登入:XXX.XXX.XXX.XXX:8888/index.html    

 

4:主从

   复制两个redis.conf文件,从机文件修改 port 和 pidfile ,加上slaveof 127.0.0.1 6379(主)即可 

 5:HA

环境

主机:127.0.0.1 6379

从机:127.0.0.1 6380

 1)手动切换

       从机上执行:slaveof no one 使它变为主机

       主机上执行:slaveof 127.0.0.1 6380(从机地址)使用它变成从机

查看主从状态:info Replication

2)自动切换(还没整好,参考:http://blog.csdn.net/wilbertzhou/article/details/17784965

                                                 http://blog.csdn.net/dc_726/article/details/11694437)

       定义两个sentinel1.conf文件,其中端口不同

少写一个port 26479(两个conf文件port不同)
#redismaster是Master的名称,127.0.0.1是Master的Ip,2表示确认一个Master为O_DOWN最少需要多少个哨兵认可()
sentinel monitor redismaster 127.0.0.1 6379 2
#多少秒(默认30秒)后Maste不可用被确认为S_DOWN状态
sentinel down-after-milliseconds redismaster 30000
#是否对redismaster指向failover(2.8没这项)
sentinel can-failover redismaster yes
#指定redismaster failover的超时时间(毫秒)
sentinel failover-timeout redismaster 900000
#在failover过程中,需要多少个Slave指向新的Slave
sentinel parallel-syncs redismaster 1

 

分享到:
评论

相关推荐

    REDIS_redis的工具包_redisinlabview_labviewredis_labview调用redis_redis

    **Redis与LabVIEW的整合:RedisinLabVIEW和LabVIEWRedis工具包** Redis是一个高性能的键值数据库,常用于数据缓存和消息队列。它支持丰富的数据类型,包括字符串、哈希表、列表、集合和有序集合。在LabVIEW...

    Windows版 Redis 5.0.14

    Redis 是一个开源的内存数据结构存储系统,常被用作数据库、缓存和消息代理。在Windows环境下,Redis 的安装和使用与在Linux系统中有所不同。这里我们将详细讨论Windows版Redis 5.0.14的相关知识点。 1. **Redis ...

    StackExchange.Redis Redis客户端

    最近需要在C#中使用Redis,在Redis的官网找到了ServiceStack.Redis,最后在测试的时候发现这是个坑,4.0已上已经收费,后面只好找到3系列的最终版本,最后测试发现还是有BUG或者是我不会用。没有办法,最好找到了...

    Linux 系统 安装redis redis-5.0.1.tar.gz 安装包

    在Linux系统中安装Redis是一个常见的任务,特别是在搭建服务器或开发基于Redis的数据缓存应用时。Redis是一个开源的、高性能的键值对存储系统,适用于数据缓存、消息队列等多种场景。本文将详细介绍如何在Linux上...

    redis-windows-Redis7.0.0.zip

    Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多种场景。它以其高效、轻量级的特性,在IT行业中备受青睐,尤其是在互联网领域。在Windows环境...

    redis-windows-redis7.0.5.zip

    Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值对存储系统,常被用作数据缓存、消息队列以及数据库等角色。它的设计目标是速度和数据持久化,支持多种数据结构,如字符串、哈希表、列表、集合、...

    redis部署6.2.6最新稳定版文档和程序 redis部署6.2.6最新稳定版文档和程序

    redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和...

    redis在win上的运行脚本redis.bat

    Redis是一款高性能的键值对数据库,常用于缓存、消息队列等场景。在Windows操作系统上运行Redis,通常需要借助一些额外的工具。标题提到的"redis在win上的运行脚本redis.bat"就是一个帮助用户在Windows环境下启动...

    redis win x64位 及 安装卸载RedisServer服务

    Redis是世界上最受欢迎的开源内存数据结构存储系统,它可以用作数据库、缓存和消息代理。在Windows 64位环境下,Redis的安装和卸载过程是很多开发者和系统管理员需要了解的重要技能。以下是对这些知识点的详细说明:...

    Redis Desktop Manager redis的可视化工具压缩包,解压即用

    Redis Desktop Manager是一款强大的开源图形化界面工具,专为管理和操作Redis键值存储系统而设计。它为用户提供了直观且高效的界面,使得在处理Redis数据库时能够更加便捷。这个压缩包包含的就是这款工具的安装文件...

    Redis-7.0.5-x64 for Windows 64位版 Redis 7.0.5

    Redis是一款高性能的键值对内存数据库,被广泛应用于缓存、数据存储等领域。在这个Windows 64位版本的Redis 7.0.5中,我们能够看到一系列关键组件和配置文件,这使得它能够在Windows环境下运行。以下是关于Redis ...

    Redis 7.0.4 x64位 windows 系统 安装包 Redis7.0.4.zip

    Redis7.0.4.zip,解压缩到D盘根目录后,安装后启动为Windows服务 注意是windows 64位系统才可使用,不支持windows 32位系统使用 已经在Win10,Win11,Windows server 2012系统测试运行可用 使用步骤注意事项: ...

    若依前后端分离版去redis版/无redis版本

    基于前后端分离的应用,无论是否使用Redis,都需要考虑如何进行数据的存储和缓存。下面我将分别介绍基于Redis和无Redis的两种版本的特点。 基于Redis的版本 特点 缓存处理:Redis作为内存数据库可以用来缓存频繁访问...

    Windows 上安装 Redis安装,redis7.2安装到windows上面

    在Windows上安装Redis的过程涉及到多个步骤,包括启用必要的Windows功能、安装WSL2(Windows Subsystem for Linux 2)、设置默认WSL版本以及在Linux环境中安装Redis。以下是对这些步骤的详细说明: 1. **启用...

    redis 免安装 redis客户端 redis-desktop-manager-0.8.8.384

    Redis 是一个高性能的键值数据库,它以键值对的形式存储数据,广泛应用于缓存、消息中间件、实时分析等领域。在 Windows 环境下,通常需要通过安装过程来设置 Redis 服务,但这里提供的资源是“redis 免安装”,意味...

    redis 可视化工具以及免安装redis 绿色版

    Redis,全称Remote Dictionary Server,是一款高性能的键值存储数据库,常用于缓存、消息队列等场景。本文将深入探讨Redis的可视化工具及其免安装绿色版的使用,帮助你更好地管理和操作Redis服务器。 首先,了解...

    Redis使用教程,详解

    Redis 使用教程详解 Redis 是一个高性能的 NoSQL 键值存储数据库,广泛应用于缓存、任务列表、网站访问统计数据、过期处理、应用排行榜、分布式集群架构中的 session 分离等领域。下面是 Redis 的详细使用教程。 ...

    redis3.0安装包 window 64位

    (1)支持Lua脚本:Redis 3.0支持Lua脚本,可以在Redis中执行脚本,大大提高了Redis的灵活性和可扩展性; (2)可插拔模块化:Redis 3.0提供了可插拔的模块化功能,可以根据用户的需求,自定义模块,实现不同的功能...

    redis++使用说明,windows下编译redis-plus-plus

    "Redis++使用说明,windows下编译Redis-Plus-Plus" 在这篇文章中,我们将详细介绍如何在Windows平台下编译Redis++,包括编译hiredis.lib和Win32_Interop.lib静态库文件的过程,然后安装Cmake并编译Redis++,最后...

    redis 6.0 windows 版本

    Redis是一款高性能的键值存储系统,常用于数据库、缓存和消息代理等场景。它支持丰富的数据类型,如字符串、哈希、列表、集合和有序集合。在Windows平台上使用Redis,通常需要通过编译源码或者寻找预编译的二进制...

Global site tag (gtag.js) - Google Analytics