`
这些年
  • 浏览: 389270 次
  • 性别: 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

 

分享到:
评论

相关推荐

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

    Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows ...

    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作为内存数据库可以用来缓存频繁访问...

    redis-windows-7.0.11

    Redis是一种开源的内存数据结构存储系统,它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。Redis可以用作数据库、缓存和消息中间件。Redis在性能、可扩展性和灵活性方面表现出色,因此被广泛应用于Web...

    redis-5.0.4.tar.gz下载及redis安装过程

    redis安装 1: 下载redis-5.0.4.tar.gz 2: 解压源码并进入目录 tar zxvf redis-5.0.4.tar.gz cd redis-5.0.4 3: 不用configure 4: 直接make (如果是32位机器 make 32bit) 查看linux机器是32位还是64位的方法:...

    redis-5.0.5.tar.gz

    redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-...

    windows环境下配置redis6集群

    注意:由于本人配置redis.conf中的路径使用的是绝对路径,当前redis安装目录的父目录为D:\InstallDir,可以在每个配置文件中修改为自己指定的路径位置 redis638-.conf配置文件内容 #redis服务器端口号 port 6380 #...

    Redis集群下过期key监听的实现代码

    在使用redis集群时,发现过期key始终监听不到。网上也没有现成的解决方案。于是想,既然不能监听集群,那我可以建立多个redis连接,分别对每个redis的key过期进行监听。以上做法可能不尽人意,目前也没找到好的解决...

    Redis-5.0.0集群配置

    本文档基于以前写的《Redis-3.0.5集群配置》和《Redis-4.0.11集群配置》。  redis-3.0.0开始支持集群,redis-4.0.0开始支持module,redis-5.0.0开始支持类似于kafka那样的消息队列。  本文参考官方文档而成:...

    redis desktop manager(redis桌面管理器)下载(0.8.3)

    redis-desktop-manager-0.8.3.3850.rar windows平台安装文件 Redis Desktop Manager(redis桌面管理器)是一款非常实用的跨平台Redis桌面管理软件。也被称作Redis可视化工具,是一款开源软件,支持通过SSH Tunnel连接...

    Redis面试题50道(含答案)_.pdf

    1、什么是 Redis? 2、Redis 相比 memcached 有哪些优势? 3、Redis 支持哪几种数据类型? 4、Redis 主要消耗什么物理资源? 5、Redis 的全称是什么? 6、Redis 有哪几种数据淘汰策略? 7、Redis 官方为什么不提供 ...

    redis获取命令字典的方法及全部的group命令.txt

    本地安装redis,通过安装目录下的redis客户端程序可以连接任意Redis服务(只要服务端是启动着的),命令 redis-cli -h ip -p port。如果服务端要求认证资格,可能还要输入用户名密码等参数。 Redis命令十分丰富,...

    redis安装离线版免编译版及离线安装需要的所有包文件

    本资源可结合我的文章《详解CentOS7下编译安装Redis5.x设置开机启动及修改端口(含redis需编译安装包和redis免编译安装包)》配合使用,同时也可单独去使用。包含redis3.0.7免编译版安装包,redis5.0.7离线安装包,...

    SpringBoot+VUE+Redis+nginx 网上拍卖平台源码.zip

    SpringBoot+VUE+Redis+nginx 网上拍卖平台源码 SpringBoot+VUE+Redis+nginx 网上拍卖平台源码 SpringBoot+VUE+Redis+nginx 网上拍卖平台源码 SpringBoot+VUE+Redis+nginx 网上拍卖平台源码 SpringBoot+...

    redis_4.0.10-1_arm64.deb 银河麒麟v4+飞腾

    1、redis_4.0.10-1_arm64.deb 银河麒麟v4+飞腾 安装包 2、自带服务启动 3、目录树 /opt/redis-4.0.10/ ├── bin │ ├── redis-benchmark │ ├── redis-check-aof │ ├── redis-check-rdb │ ├── ...

    redis视频教程百度网盘下载地址及密码

    2016122201_Redis_初探_1.mp4 2016122201_Redis_初探_2.mp4 2016122201_Redis_初探_3.mp4 2016122202_Redis_安装_字符串键_1.mp4 2016122202_Redis_安装_字符串键_2.mp4 2016122202_Redis_安装_字符串键_3.mp4 ...

    redis-x64-4.0.2.3,windows版本

    右键解压Redis压缩包,把所有文件解压到指定的redis文件夹中 1.配置redis.windows.conf文件,除了port配置为对应的端口外,其他根据需要可更改的配置项说明如下: (1)bind 127.0.0.1 (line:79) # 设置为其他机器...

    redis桌面链接工具redis-desktop

    redis桌面链接工具redis-desktop Redis Desktop Manager(简称RDM)是一款跨平台的Redis数据库管理工具,它提供了一个直观且用户友好的图形界面,允许开发者和运维人员轻松地连接到Redis服务器,并对其进行管理和...

    1.2.6版StackExchange.Redis

    1.2.6版StackExchange.Redis。 StackExchange.Redis是.net下的Redis客户端之一,目前是免费的。而用户量比较多的ServiceStack.Redis现在是收费的。把下载的三个文件(StackExchange.Redis.dll、StackExchange.Redis....

    尚硅谷_Redis.docx

    Redis是一个key-value存储系统,是当下互联网公司常用的NoSQL数据库之一,是进入互联网行业的Java开发工程师必备技术。 在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握...

Global site tag (gtag.js) - Google Analytics