redis是什么?
- redis是一个开源的、可基于内存也可持久化的Key-Value数据库,常用的NoSQL数据库之一。
它可以用作数据库、缓存和消息中间件。NoSQL不单单是sql,还有很多其他功能。 - redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。
Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
Redis缓存数据库目前已大量的应用,广泛用于存储session信息,权限信息,交易作业等热数据
Windows安装Redis:
下载地址:点击我下载Redis-x64-3.2.100(32位操作系统的请自行下载)
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 D盘,解压

解压后直接运行redis-server.exe服务端,看到如下界面,不要关闭.

如果闪退,则打开一个 cmd 窗口 使用 cd 命令切换目录到redis存储位置 运行:
redis-server.exe redis.windows.conf
这时候运行另一个 redis-cli.exe 客户端,原来的不要关闭,不然就无法访问服务端了。
redis基本命令
redis中文官方网站:传送门
Redis命令十分丰富,包括的命令组有Cluster、Connection、Geo、Hashes、HyperLogLog、Keys、Lists、Pub/Sub、Scripting、Server、Sets、Sorted Sets、Strings、Transactions一共14个redis命令组两百多个redis命令。
基础信息
1 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
2 默认端口号:6379。
3 redis默认有16个数据库,类似数组下表从零开始,初始默认使用零号库,可以使用select index 命令来切换数据库。
4 DBSIZE 命令用来得到所选数据库key数量。
5 FLUSHDB 清空当前库。
准备工作:我这里用的软件是IDEA
在pom.xml中添加Jedis依赖。
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
配置redisConfig.xml属性文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="classpath:redis.properties" ignore-unresolvable="true"/>
<!-- redis连接池的配置 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="${redis.maxActive}"/>
<property name="maxIdle" value="${redis.maxIdle}"/>
<property name="maxWaitMillis" value="${redis.maxWait}"/>
</bean>
<!-- redis的连接池pool,不是必选项:timeout/password -->
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="poolConfig" ref="jedisPoolConfig" />
<constructor-arg name="host" value="${redis.host}" />
<constructor-arg name="port" value="${redis.port}" type="int" />
</bean>
</beans>
配置redis服务器连接信息,以便redis配置文件属性获取。
Spring-mybatis全局配置文件中,引入redis配置文件
java连接jedis测试API
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"} )
public class RedisApiTest {
Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
JedisPool jedisPool;
Jedis jedis = null;
@Before
public void getConn(){
// jedis = new Jedis("127.0.0.1",6379);
jedis = jedisPool.getResource();
}
@Test
public void testString(){
// 添加数据到缓存中
jedis.set("key1","value1");
jedis.set("key2","value2");
jedis.set("key3","value3");
logger.debug("----> 存入缓存中");
// 获取缓存中的数据
logger.debug("----> 获取缓存中的数据:" + jedis.get("key1"));
// 删除缓存中的数据
jedis.del("key1");
logger.debug("----> 删除后的缓存数据:" + jedis.get("key1"));
}
@Test
public void testHash(){ // 对象
// 添加数据到缓存中
jedis.hset("hash1","username","KK");
// 获取缓存中的数据
logger.debug("----> 获取缓存中的数据:" + jedis.hget("hash1","username"));
// 同时存储多个字段和值
Map<String,String> map = new HashMap<>();
map.put("username","YY");
map.put("age","18");
map.put("sex","男");
jedis.hmset("hash2",map);
// 获取缓存中的数据
List<String> stringList = jedis.hmget("hash2", "username", "age", "sex");
logger.debug("----> 获取缓存中的数据:" + stringList);
}
@Test
public void testList(){
// 存储数据到列表中
jedis.lpush("list","A","B","C","D","E");
// 获取缓存中的列表所有数据
List<String> list = jedis.lrange("list", 0, -1);
for (int i=0;i<list.size();i++){
logger.debug("----> 获取列表的数据:" + list.get(i));
}
// 模拟队列 先进先出
// 如何移出并获取先进去的元素
logger.debug("----> 获取列表最早放进去的数据:" + jedis.rpop("list"));
// 模拟 先进后出
// 如何移出并获取后进去的元素
logger.debug("----> 获取列表最后放进去的数据:" + jedis.lpop("list"));
}
}
注意:Java连接redis服务端,如果使用的不是127.0.0.1,而是本地ip例如192.168.6.246。
会出现如下错误:
Redis远程连接失败-“Connection reset by peer”的解决方式
在网上查找原因,说是要将配置文件中的bind 127.0.0.1注释掉。为什么呢?
分析原因如下:
redis-server在启动时,如果没有指定配置文件的话,它使用的是默认的配置文件。
在修改配置文件时,发现bind 127.0.0.1句处上方的注释为

今天开始学习redis,ヾ(◍°∇°◍)ノ゙!!!
版权属于:月丶小柒’s Blog
本文链接:https://www.xiaoqi22.cn/archives/20190907/104.html
版权声明:若无注明,本文皆为“月丶小柒’s Blog”原创,所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。 您可以自由的转载和修改,但请务必注明文章来源且不可用于商业目的
One comment
搜藏