关于redis使用

1.window下使用

下载地址:http://pan.baidu.com/s/1gdCoKyn

然后运行redis-server.exe

启动好服务如下,

2.打开cmd窗口,cd到目录C:\Users\Administrator\Desktop\redis-2.4.5-win32-win64\32bit

执行:redis-cli.exe(客户端)

3.redis命令-数据存储介绍

http://redis.io/topics/data-types-intro

官网的例子最好照着做一遍,能快速学会redis,除了最后Bitmap、lexicograpical这些比较难懂,而且也不见得常用到,而外基本都是比较通俗易懂的

4.Java访问redis-jedius

jedis-2.7.2.jar下载地址:http://pan.baidu.com/s/1o6mXYIm

给出一个jedius-api:http://tool.oschina.net/uploads/apidocs/

再给一个Java封装类:

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class RedisTool {

	private static String redisHost = "127.0.0.1";

	private static JedisPool pool = new JedisPool(redisHost);

	// get命令,数据库默认选择序号为0
	public static Object get(String key) {
		Jedis jedis = null;
		try {
			jedis = pool.getResource();
			byte[] data = jedis.get(key.getBytes());
			if (data == null || data.length <= 0) {
				return null;
			}
			return SerializeUtil.unserialize(data);
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
	}

	// get命令,第二个参数为选择数据库
	public static Object get(String key, int dbIndex) {
		Jedis jedis = null;
		try {
			jedis = pool.getResource();
			jedis.select(dbIndex);
			byte[] data = jedis.get(key.getBytes());
			if (data == null || data.length <= 0) {
				return null;
			}
			return SerializeUtil.unserialize(data);
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
	}

	// set命令,默认选择序号为0
	public static void set(String key, Object value) {
		Jedis jedis = null;
		try {
			jedis = pool.getResource();
			jedis.set(key.getBytes(), SerializeUtil.serialize(value));
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
	}

	// set命令,第二个参数为选择数据库
	public static void set(String key, Object value, int dbIndex) {
		Jedis jedis = null;
		try {
			jedis = pool.getResource();
			jedis.select(dbIndex);
			jedis.set(key.getBytes(), SerializeUtil.serialize(value));
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
	}

	// hset命令,就是普通的Java-Map对象形式,key标识不同的Map对象,field为指定Map对象的键值
	public static void hset(String key, String field, Object value) {
		Jedis jedis = null;
		try {
			jedis = pool.getResource();
			jedis.hset(key.getBytes(), field.getBytes(), SerializeUtil.serialize(value));
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
	}

	// hget,就是获取指定key值的Map对象的field字段值
	public static Object hget(String key, String field) {
		Jedis jedis = null;
		try {
			jedis = pool.getResource();
			byte[] data = jedis.hget(key.getBytes(), field.getBytes());
			if (data == null || data.length <= 0) {
				return null;
			}
			return SerializeUtil.unserialize(data);
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
	}

	// remove为移除一条记录
	public static void remove(String key) {
		Jedis jedis = null;
		try {
			jedis = pool.getResource();
			jedis.del(key.getBytes());
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
	}

	// redis实现的自动+1序列获取
	public static long getAutoId(String key) {
		Jedis jedis = null;
		long id = 1;
		try {
			jedis = pool.getResource();
			id = jedis.incr(key.getBytes());
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
		return id;
	}

	// list-push,key标识某list对象,而且是left-push
	public static void lpush(String key, Object value) {
		Jedis jedis = null;
		try {
			jedis = pool.getResource();
			jedis.lpush(key.getBytes(), SerializeUtil.serialize(value));
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
	}

	// list-push,key标识某list对象,而且是right-push
	public static void rpush(String key, Object value) {
		Jedis jedis = null;
		try {
			jedis = pool.getResource();
			jedis.rpush(key.getBytes(), SerializeUtil.serialize(value));
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
	}

	// 获取指定key值的list对象的所有元素
	public static List<Object> lrange(String key) {
		Jedis jedis = null;
		List<Object> result = null;
		try {
			jedis = pool.getResource();
			List<byte[]> list = jedis.lrange(key.getBytes(), 0, -1);
			result = new ArrayList<Object>(list.size());
			for (byte[] o : list) {
				result.add(SerializeUtil.unserialize(o));
			}
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
		return result;
	}

	// left-pop一个指定key值的list对象
	public static Object lpop(String key) {
		Jedis jedis = null;
		Object object = null;
		try {
			jedis = pool.getResource();
			byte[] bs = jedis.lpop(key.getBytes());
			object = SerializeUtil.unserialize(bs);
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
		return object;
	}

	// right-pop一个指定key值的list对象
	public static Object rpop(String key) {
		Jedis jedis = null;
		Object object = null;
		try {
			jedis = pool.getResource();
			byte[] bs = jedis.rpop(key.getBytes());
			object = SerializeUtil.unserialize(bs);
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
		return object;
	}

	// list-index,查找指定key值的list对象的第index号元素
	public static Object lindex(String key, int index) {
		Jedis jedis = null;
		Object object = null;
		try {
			jedis = pool.getResource();
			byte[] bs = jedis.lindex(key.getBytes(), index);
			object = SerializeUtil.unserialize(bs);
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			close(jedis);
		}
		return object;
	}

	// 关闭jedis
	private static void close(Jedis jedis) {
		if (jedis != null) {
			jedis.close();
		}
	}

	// list-length,获取指定key值的list对象的元素个数
	public static long llen(String key) {
		Jedis jedis = null;
		long object;
		try {
			jedis = pool.getResource();
			object = jedis.llen(key.getBytes());
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			if (jedis != null) {
				jedis.close();
			}
		}
		return object;
	}

	// 获取当前数据库(默认序号为0)的所有keys,相当于“keys *”命令
	public static List<String> keys() {
		Jedis jedis = null;
		List<String> list = null;
		try {
			jedis = pool.getResource();
			Set<byte[]> set = jedis.keys("*".getBytes());
			list = new ArrayList<String>(set.size());
			for (byte[] bs : set) {
				list.add(new String(bs, "UTF8"));
			}
		} catch (Exception e) {
			throw new RuntimeException("Redis出现错误!", e);
		} finally {
			if (jedis != null) {
				jedis.close();
			}
		}
		return list;
	}

}

5.linux下安装redis

安装包为redis-3.0.4.tar.gz,给出下载地址:http://pan.baidu.com/s/1jGm0ncy

先cd到/usr/local/,然后mkdir一个文件夹redis,之后把redis-3.0.4.tar.gz拷贝到/usr/local/redis

解压,执行tar -cxvf redis-3.0.4.tar.gz

之后cd到redis-3.0.4,执行make命令

然后执行make install命令

完成以后redis服务自动启动,这次我的redis服务是部署在210.10.5.189上面,本机ip为210.10.5.102

打开cmd窗口,cd到有redis-cli.exe的那个目录下,C:\Users\Administrator\Desktop\redis-2.4.5-win32-win64\32bit,然后执行redis-cli.exe -h 210.10.5.189 -p 6379,如下

跟windows上部署的没什么区别了。

6.还有几个补充说明

6.1命令

flushdb--删除当前数据库中的所有Key
flushall--删除所有数据库中的key

6.2 linux-redis查看启动进程:
ps -ef | grep redis

6.3 配置redis最大分配内存

vim redis.conf

修改maxmemory <bytes>为maxmemory <2147483648>

为防止内存全部被redis耗光,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,也会从free-list里清除一些key-value。当以上方法都没有效果,那redis就不再支持写入操作(如set,lpush),但不影响读操作如get。(maxmemory配置默认是注释掉的,没限制,跟RAM相同)

时间: 2024-10-11 08:03:46

关于redis使用的相关文章

Redis+keepalived实现双机热备

一. 简介 安装使用centos 5.6(64) Master 192.168.2.235 Slave 192.168.2.236 Vip 192.168.2.200 编译环境 yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-devel 当 Master 与 Slave 均运作正常时, Master负责服务,Slave负责Standby: 当 Master 挂掉,Slave 正常时, Slave接管服务,同时关闭主从

Python操作数据库(mysql redis)

一.python操作mysql数据库: 数据库信息:(例如211.149.218.16   szz  123456) 操作mysql用pymysql模块 #操作其他数据库,就安装相应的模块 import  pymysql ip='211.149.218.16' port=3306 passwd='123456' user='root' db='szz' conn=pymysql.connect(host=ip,user=user,port=port,passwd=passwd,db=db,cha

Redis在Linux中安装使用

一.安装$ wget http://download.redis.io/releases/redis-x.x.x.tar.gz $ tar xzf redis-x.x.x.tar.gz $ cd redis-x.x.x $ make sudo cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-check-rdb redis-trib.rb redis-sentinel redis-server /usr/loca

redis 学习 四 队列

<?php /** * redis实战 * * 利用列表list实现简单队列 * * @example php cache.php */ header('content-type:text/html;chaeset=utf-8'); $redis = new \Redis(); $redis->connect('127.0.0.1', 6379); // 进队列 $userId = mt_rand(000000, 999999); $redis->rpush('QUEUE_NAME',j

Redis实战(三)Redis主从复制

从架构 1.主从架构图 2.通过命令 mkdir redisCluster创建redis集群文件夹 3.通过命令mkdir 6380   mkdir 6381   mkdir 6382在redisCluster文件夹下创建三个文件夹 4.通过以下命令将redis.conf分别拷贝到6380.6381. 6382文件夹下 cp /usr/local/redis/redis-3.0.2/redis.conf  ./6380 cp /usr/local/redis/redis-3.0.2/redis.

Redis Cluster集群部署搭建

在Oracle的路上走了许多年,换换感觉,尝试一下新的知识,也是一个不错的感觉.Redis,一个超轻量化的内存数据库,只做一小块数据库功能实现,却非常优秀的一个产品.今天,就分享一下安装Redis集群的过程. 搭建redis集群,建议至少需要准备3台服务器,共搭建6个节点,3个master,3个slave,并且要求3个master节点不能全部跑到同一台服务器上,保证节点安全,3台服务器的配置相同,使用redistest账号搭建,对应的端口是7000/7001/7002端口 我的集群分配如下,每个

redis的单机安装与配置以及生产环境启动方案

简单介绍一下redis的单机安装与配置,方便自己记录安装步骤的同时方便他人获取知识. 首先,从官网下载最新版的(稳定版)的redis安装包.官网地址如下:https://redis.io/download 下载源码包后,redis需要编译安装.需要安装gcc和tcl,gcc用于编译tcl用于测试. 使用命令安装gcc,yum install gcc,一路选择yes,gcc就可以安装成功. 接下来安装tcl,首先获取tcl源码包(见百度云盘)或者使用命令:wget http://downloads

Redis学习之Sort Set详解

本文和大家分享的主要是Redis中Sort Set相关内容,一起来看看吧,希望对大家学习redis有所帮助. 游戏服务器需要做一个排行榜实时更新,如果沿用传统的方法,一般是通过后端的定时任务去跑数据来生成排行榜数据,这种方法一方面无法满足产品对功能实时性的要求,另一方面也一定程度上消耗服务器端有限的资源.如果从每次数据库读取数据并进行排名(使用Mysql的sort关键字进行排序),在关卡数据量的级数大时是一种效率低的方法.在查阅大量资料后,发现了Redis中的有序集合(Sort Set). Re

redis 集群

redis 集群 redis集群是redis提供分布式数据库方案, 集群通过分片(Sharding)来进行数据共享,并提供复制和故障转移功能. 节点 redis集群通常由多个节点(node)组成,在开始每个node 都是相互独立的. 要组建成真正可工作的集群,我们必须将各个独立的节点连接起来,构成一个包含多个节点的集群. 命令 cluster meet <ip> <port> 向一个node 发送命令 cluster meet,让节点与ip/port所指定的节点 进行握手(hand

常见redis.conf解析

参数说明redis.conf 配置项说明如下:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程daemonize no2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定pidfile /var/run/redis.pid3. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码