RedisNosql的常见分类键值对数据库 redis Memcache列存储数据库Hbase cassandra文档类型 数据库 MongoDB CouchDB图形数据库Neo4j FlockDB连接redis客户端查看所有key的值:报 (error) NOAUTH Authentication required. 没有授权!需要输入密码:auth admin@re dis (密码)Redis 的五大类型Redis操作-【String】类型set age 20get agedel ag eSETNX age 18 //如果这个key存在,不覆盖值。如果不错在,写入redisexpire age 30 //给key设置过期时间,30秒 -2 表示过期了。ttl age //查看key的剩余时间append name //字符串拼接,返回字符串长度。strlen name //返回字符串长度imcr age //累加,步长为1decr a ge //累减 步长为1incrby age 10 //在此数值上增加10decrby age 5 //在此数值上减 少5getrange name 0 -1 //截取字符串中的部分内容mset k1 aa k2 bbmget k1 k2 msetnx k4 d k3 jselect 1 //redis 默认有16个库,根据下标切换库flushd b //将库里的key全部清除flushall //将所有库中的数据全部清除Redis操作-【hash】类型hset use r name zhangxin //放入hash 中一个user 实体类,属性name 值zhangxinhget use r name //获取hash中user实体类的name值hmset user age 18 sex man / /给user实体,多重赋值属性/值hmget user name age sex //获取user实体 多属性的值h getall user //获取user实体的所有键值对hlen user //查看user实体中有多少个属性hkeys user //列出user实体的所有key值hwals user //列出 user实体的所有值hincrby use r age 3 //给实体user 的age 增加 3hincrbyfloat user age 2.3 //给实 体user 的age 增加2.3 带小数的值hexists user age // 判断user实体中是否存在age 存在返 回1 不存在返回0Hdel user age //删除 实体的属性Redis操作-【list】类型lpush list1 pig cow sheep chicken duck //从左边把数据放入Lrang list1 0 -1 rpush list1 pig cow sheep chicken duck //从左边把数据放入Lrang list1 0 -1lpop list1 //从左边开始,移除list1的值rpop list1 //从右边开始,移除 list值llen list1 //查看list1 的长度lindex list1 2 //下标为2 的值lset list1 1 1001 //将list1中,下标为1的值,修改为1001linsert list1 before 1001 aaa //list1中在1001之前插入aaalinsert list1 after 1001 aaa //list1中在1001之后插入aaalrem list1 2 aaa //删除list1中的两个aaaltrim list1 1 2 //截取并替换list1的值del list1 //删除list1Redis操作-【set 】类型sadd set duck pig cow sheep sheep pig //set集合去重smemb ers set //查看set值scard set // 查看set数量sismember set pig // 判 断set中是否包含pig 包含返回1 不包含返回0srem set duck //将set中的 duck删除spop s et //从set中出栈spop set 2 //从set中出栈2个srandmember set 3 //随机从s et中获取3个数smove set1 set2 10 //将 set1中的10 移到 set2中sdiff set1 set2 //筛选出在set1中有,set2中没有的值 //差集 Sinter set1 set2 //筛选出在set1 中有,set2中也有的值 //交集 sunion set1 set2 //筛选出在set1,set2所有的值 //并 集Redis操作-【zset】类型zadd zset 10 duck 20 pig 30 chicken 40 beef 50 sheep //可排序的set 去重zrange zset 0 -1 //查询zset的所有值zrange zset 0 -1 withscores //连同分数一起查询zrank zset beff //查询zset中的b eff 返回下标zscore zset beff //查询zset中beff的分数zcard zset //查询 zset的长度数量zcount zset 20 40 //查询 20到40间 数值的个数。zrangebyscore z set 20 40 //查询大于等于20 小于等于40的值zrangebyscore zset (20 (40 //查询大于20 小于40的值zrangebyscore zset (20 (40 withscores //查询大 于20 小于40的键值对zrangebyscore zset 20 40 limit 2 3 //根据分数,查询下 标 2后面的三个数zrem zset pig //删除 zset中的pig zrem zset sheep beef //删除zset中的sheep beefRedis的线程模型Rdsis是单线程的。Springboot整合redispom文件 引入redis包 org.springframe work.boot spring-boot-starter-data-redis rtifactId> 模板类:RedisTemplateStringRedisTemplate继承Red isTemplate RedisTemplate默认采用的是JDK的序列化策略 StringRedisTemplate采用的是S tring的序列化策略RedisTemplate常用方法:redisTemplate.opsForValue();//操作字符串r edisTemplate.opsForHash();//操作hashredisTemplate.opsForList();//操作 listredisTemplate.opsForSet();//操作setredisTemplate.opsForZSet();/ /操作有序setValueOperations valueOperations = redisTemplate.opsForVal ue();BoundValueOperations boundValueOps = redisTempl ate.boundValueOps("key");测试类:import org.springframework.beans.fac tory.annotation.Autowired;import org.springframework.data.redis.c ore.RedisTemplate;import org.springframework.web.bind.annotation. GetMapping;import org.springframework.web.bind.annotation.Request Mapping;import org.springframework.web.bind.annotation.RestContro ller;import springfox.documentation.annotations.ApiIgnore;/ @ Description redis 测试类 @Author zhangxin @Date 20230128 /@Api Ignore@RestController@RequestMapping("redis")public class RedisCo ntroller { @Autowired private RedisTemplate redisTemplate; //Stri ngRedisTemplate继承RedisTemplate RedisTemplate默认采用的是JDK的序列化策略 /Str ingRedisTemplate采用的是String的序列化策略 @GetMapping("/set") public Obje ct set(String key,String value){ redisTemplate.opsForValue().set( key, value); return "OK"; } @GetMapping("/get") public Object ge t(String key){ return redisTemplate.opsForValue().get(key); } @Ge tMapping("/delete") public Object delete(String key){ redisTempl ate.delete(key); return "OK"; }}Redis工具类package com.penghaisoft.w ms.utils;import org.springframework.beans.factory.annotation.Auto wired;import org.springframework.data.redis.core.StringRedisTempl ate;import org.springframework.stereotype.Component;import java.u til.Map;import java.util.Set;import java.util.concurrent.TimeUnit ;/ @Description 使用redisTemplate的操作实现类 @Author zhangxin @D ate 2023-02-17 /@Componentpublic class RedisUtil { @Autowired p rivate StringRedisTemplate redisTemplate; // Key(键),简单的key-value操 作 / 实现命令:TTL key,以秒为单位,返回给定 key的剩余生存时间(TTL, time to live)。 @param key @return / public long ttl(String key) { return re disTemplate.getExpire(key); } / 实现命令:expire 设置过期时间,单位秒 @p aram key @return / public void expire(String key, long timeout ) { redisTemplate.expire(key, timeout, TimeUnit.SECONDS); } / 实现命令:INCR key,增加key一次 @param key @return / public long in cr(String key, long delta) { return redisTemplate.opsForValue().i ncrement(key, delta); } / 实现命令:KEYS pattern,查找所有符合给定模式 patter n的 key / public Set keys(String pattern) { return redisT emplate.keys(pattern); } / 实现命令:DEL key,删除一个key @param ke y / public void del(String key) { redisTemplate.delete(key); } / / String(字符串) / 实现命令:SET key value,设置一个key-value(将字符串值 value关 联到 key) @param key @param value / public void set(String k ey, String value) { redisTemplate.opsForValue().set(key, value); } / 实现命令:SET key value EX seconds,设置key-value和超时时间(秒) @pa ram key @param value @param timeout (以秒为单位) / public void set(String key, String value, long timeout) { redisTemplate.opsFo rValue().set(key, value, timeout, TimeUnit.SECONDS); } / 实现命令 :GET key,返回 key所关联的字符串值。 @param key @return value / public String get(String key) { return (String)redisTemplate.opsForValu e().get(key); } / 实现命令:hasKey key,返回 true flest。 @param k ey @return value / public boolean hasKey(String key) { return redisTemplate.hasKey(key); } // Hash(哈希表) / 实现命令:HSET key fie ld value,将哈希表 key中的域 field的值设为 value @param key @param fiel d @param value / public void hset(String key, String field, Ob ject value) { redisTemplate.opsForHash().put(key, field, value); } / 实现命令:HGET key field,返回哈希表 key中给定域 field的值 @param key @param field @return / public String hget(String key, String field) { return (String) redisTemplate.opsForHash().get(key, fie ld); } / 实现命令:HDEL key field [field ...],删除哈希表 key 中的一个或多个指定域 ,不存在的域将被忽略。 @param key @param fields / public void hdel(St ring key, Object... fields) { redisTemplate.opsForHash().delete(k ey, fields); } / 实现命令:HGETALL key,返回哈希表 key中,所有的域和值。 @par am key @return / public Map |
|