博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于redis使用
阅读量:5922 次
发布时间:2019-06-19

本文共 8344 字,大约阅读时间需要 27 分钟。

hot3.png

1.window下使用

222254_gcFf_555061.png

下载地址:

然后运行redis-server.exe

启动好服务如下,

222502_tZBZ_555061.png

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

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

223148_jSMy_555061.png

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

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

4.Java访问redis-jedius

jedis-2.7.2.jar下载地址:

给出一个jedius-api:

再给一个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 lrange(String key) {		Jedis jedis = null;		List result = null;		try {			jedis = pool.getResource();			List
 list = jedis.lrange(key.getBytes(), 0, -1); result = new ArrayList
(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
 keys() { Jedis jedis = null; List
 list = null; try { jedis = pool.getResource(); Set
 set = jedis.keys("*".getBytes()); list = new ArrayList
(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,给出下载地址:

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

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

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

然后执行make install命令

完成以后cd到redis-3.0.4,然后执行

[root@localhost redis-3.0.4]# redis-server redis.conf

启动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,如下

230436_4xzZ_555061.png

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

6.还有几个补充说明

6.1命令

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

6.2 linux-redis查看启动进程:

ps -ef | grep redis

关闭linux的redis服务则kill进程即可

6.3 redis服务后台启动,vi redis.conf修改如下,

################################ GENERAL  ###################################### By default Redis does not run as a daemon. Use 'yes' if you need it.# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.daemonize no# When running daemonized, Redis writes a pid file in /var/run/redis.pid by# default. You can specify a custom pid file location here.pidfile /var/run/redis.pid# Accept connections on the specified port, default is 6379.# If port 0 is specified Redis will not listen on a TCP socket.port 6379# TCP listen() backlog.

设置daemonize no->daemonize yes

6.4 linux设置随机启动

vi /etc/rc.local

在最后面一行添加:/usr/local/redis/redis-3.0.4/src/redis-server /usr/local/redis/redis-3.0.4/redis.conf

6.5 配置redis最大分配内存

vim redis.conf

修改maxmemory <bytes>为maxmemory <2147483648>

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

233519_MMmL_555061.png

6.6 存储策略的配置

083808_6GTZ_555061.png

这里官方解释得很清楚,如果需要修改后立即存储则第一条记录修改为

save 1 1

6.7 安全密码配置(linux下生效,windows下无效,已测试确认)

084249_achO_555061.png

默认redis是不需要密码的,如果需要设置密码为***则这里改配置为

requirepass ***

另外有2篇博客也不错,主要介绍redis数据结构:

7.redis主从配置

8.spring-session-data-redis 把session存到redis里面加快访问速度

http://blog.csdn.net/xiejx618/article/details/42919327

9.conf配置

转载于:https://my.oschina.net/u/555061/blog/504107

你可能感兴趣的文章
Linux 性能分析工具 nmon for Linux
查看>>
Android之Window和弹窗问题
查看>>
iOS图片拉伸三种方式
查看>>
Mysql 开启Federated引擎的方法
查看>>
[转]js之类型转换与引用类型(Boolean/Number/String)
查看>>
robots.txt写作语法
查看>>
CentOS 7安装Supervisor设置开机启动
查看>>
spring 配置常见错误
查看>>
计算机图形学当中的光照模型
查看>>
VC 2008 Express下安装OpenCV2.3.1
查看>>
IT面试之全排列
查看>>
js-className
查看>>
Solr5安装配置
查看>>
linux下的i2c与时钟芯片pcf8563通信
查看>>
Spring——jar包详解
查看>>
关于setInterval与setTimeout作用域问题
查看>>
【转】NodeJS之process进程
查看>>
5、外观模式
查看>>
那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)
查看>>
详解Android中那些酷炫返回方式的实现
查看>>