redis的概念 |
1.reedis简介
1.Redis是完全开源免费,遵循BSD协议,是一个高性能的key-value的数据库
2.Redis与其他key-value缓存产品有以下三个特点
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供;list,set,zset,hash,等数据结构存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
Windows中安装redis |
2.使用命令操作redis数据
1、进入redisd的src目录
redis-cli.exe -h localhost -p 6379 #登录redis
redis-cli.exe -hlocalhost -p 6379 -a 123456 #登录redis 使用密码登录 123456是密码
2、符串类型操作设置单个值
SET name value #set name2 张三 name2 李四
3、字符串类型操作设置多个值
MSET key1 value1 key2 value2 #mset name1 张三 name2 李四
4、字符串类型获取单个值
GET key1 #get name1
5、字符串类型获取多个值
MGET key1 key2 #mget name1 name2
6、删除指定键
DEL key1 key2 #del name1 name2
7、在原有的值上追加值
APPEND key1 value #append name1 你好
8、让键在一定时间后失效
EXPIRE key1 second #expire name1 5
设置键在多少秒后失效,PEXPIRE是毫秒语法
9、同一键只能存储一次
SETNX key1 value
#只在key不存在的情况下,将键key的值设置为value
#若键key已经存在,则SETNX命令不做任何动作
#设置成功,返回1,设置失败,返回0.
10、哈希常用操作方法
HSET key field value #hset user(hash集合名) name(键) 张三 #设置哈希表key中的域field的值
HMSET key field value [field value...] #设置哈希表key中的多个域的值
HLEN key #返回哈希表key中的域的数量
HGET key field #设置哈希表key中的域field的值
HEXISTS key field #判断哈希表是否包含某个域field包含返回1,不包含返回0
HDEL key field [field...] #删除哈希表中的一个或多个域
11、列表常用操作方法
LPUSH key value[value...] #将一个或多个value插入列表的表头
LPOP key #移除并返回列表的头元素(后进先出),若key不存在返回nil
RPUSH key value[value...] #和lpush类似,但是它是将数据插入到表尾(最右边)
RPOP key #移除并返回列表的末尾,若key不存在则返回nil
LSET key index value #将列表中指定位置的值该为指定的值,若key不存在或index超出索引是,返回错误
LLEN key #返回列表的长度
LRANGE key START END #返回列表中指定区间内的元素,区间以偏移量STARE和END指定
12、集合常用方法
SADD key member[member...] #将一个或多个member元素加入到集合key当中,已经存在于集合的member元素将被忽略
SMEMBERS key #返回集合中的所有的成员
SPOP key #用于移除并返回集合中的一个随机元素
SREM key member1..membern #用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略
13、有序集合常用方法
ZADD key score member #向有序集合key中插入一个或多个元素。如果元素已经存在,更新score的值并移动member 元素的位置
ZCAED key #返回有序集合key元素个数
ZCOUNT key min max #返回有序集合key中分数在min到max的元素的个数
ZRANK key start stop [WITHSCORES] #按照默认的升序,返回有序集合key中位置从start到stop的所有元素
ZRANK key member #按照默认的升序,返回元menber在有序集合key中的排名
ZRANK key member [member ...] #移除有序集合key中的一个或多个元素
使用api操作redis |
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.6.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
2.applicationCentext.xml(springMvc.xml)文件配置连接redis信息
<!-- spring管理redis缓存管理器 -->
<bean id="redisCacheManager"
class="org.springframework.data.redis.cache.RedisCacheManager">
<constructor-arg index="0" ref="redisTemplate"/>
</bean>
<cache:annotation-driven cache-manager="edisCacheManager"/>
<!--jedis连接池配置-->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="300"/>
<property name="maxWaitMillis" value="300"/>
<property name="maxTotal" value="600"/>
<property name="testOnBorrow" value="true"/>
</bean>
<!--redis的连接工厂-->
<bean id="connectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="192.168.83.98" p:port="6379" p:pool-config-ref="poolConfig"
p:password="123456"
p:database="0" />
<!--spring data 提供 redis模板 -->
<bean id="redisTemplate"
class="org.springframework.data.redis.core.StringRedisTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="keySerializer">
<bean class="org.springframework.data.rerializer.StringRedisSerializer"/>
</property>
<property name="valueSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"> </bean>
</property>
</bean>
3.编写RedisUtils工具类
@Service
public class UserServiceImpl implements UserService{
@Resource
private RedisTemplate<String,String>redisTemplate;
public String getCity(){
//通过模板,获取到Stirng类型的redis对象
valueOperations<String,String>redisString=redisTemplate.opsForValue();
//使用set方法,保存key和value的值
redisString.set("city","aabb");
//使用get(key)的方法获取到city对应的值
String string=redisString.get("city");
return string;
}
public List<String> getCitys(){
//通过模板获取list类型的redis
ListOperations<String,String>redisList=redisTemplate.opsForList();
//通过key依次插入数据
redisList.leftPush("xxx","xxx");
//查找索引范围内的所有数据
List<String>ranger=redisList.range("xxx",0,10);
return range;
}
public void setRedisTemplate(RedisTemplate<String,String>redisTemplate){
this.redisTemplate=redisTemplate;
}
}
Listranger=redisList.range(“xxx”,0,10);
return range;
}
public void setRedisTemplate(RedisTemplate<String,String>redisTemplate){
this.redisTemplate=redisTemplate;
}
}