Redis 数据操作

一、Redis 比 Memcached 数据库最大的亮点就在于它支持的数据类型是非常多的,在 Redis 里面支持有字符串数据、hash 数据、列表(List)数据、散列集合(Set)、有序集合。
NoSQL 数据库的特点就是不使用 SQL 语句,它利用一些自己的命令来进行替换。

1、 进行数据的设置(key=test、value=java):set testjava

2、 根据 key 取得数据:get test;

3、 默认情况下可以进行内容的修改操作,此时只需要使用 set 命令就可以使用新的内容替换掉旧的内容,但是很多情况往往会出现一种判断需求,即:如果设置的 key 不存在,才进行设置,否则就不设置。
· 不覆盖设置:setnx test zookeeper;
· 如果此时设置成功返回一个数字 1(C 语言里面非 0 就是 true),如果存在返回 0(false);

4、 有效期保存:setex 138110112 10 828282;

· 此时的数据在 10 秒之内有效,超过了 10 秒之后该数据将自动销毁;
· 如果要想查看数据的有效时间,则可以使用“ttl key”的形式查看:
|- 此时如果指定的 key 存在,那么就可以取得剩余的存活时间(秒),如果该 key 已经消失了,那么返回-2;
· 如果现在突然有一个不过期操作:persist key;
5、 设置多个 key 的信息:mset test java bigdata hadoop service tomcat;

6、 不覆盖设置:msetnx test java bigdata hadoop service tomcat;

7、 追加内容:append test spring,返回的是当前的数据保存的长度;

8、 取得长度:strlen test ;

9、 删除数据:del info bigdata;

10、 自增处理:
· 保存一个数据,该数据的内容为数字:set num 10;
· 自增操作:incr num,将返回增长后的内容;

11、 默认情况下 incr 每次执行“+1”的自增,也可以自己设置:incrby num 10;

12、 自减 1 处理:decr num;

13、 自减指定的数据:decrby num 10;

二、散列类型(Hash)
Hash 是一种 key 与 value 映射的结构,在操作里面在之前保存的数据只能够是一个内容,但是如果使用了 Hash 之后保存的数据可以是一个 key 与 value 的结构。

1、 设置一个 hash 数据:hset test type1 1;

2、 取出 hash 数据:hget test type1;

3、 数据加法操作:hincrby test type1 1;

4、 默认情况下如果重名的内容会覆盖,可以使用不覆盖设置:hsetnx test type2 100;

5、 设置多个数据:hmset testjava 1-1 10 1-2 20;

6、 获取所有的 key 的信息:hmget testjava 1-1 1-2;

7、 判断某个数据是否存在:hexists testjava 1-1,存在返回 1,不存在返回 0;

8、 取得指定 key 的数量:hlen testjava;

9、 删除一个 key 的信息:hdel testjava 1-1;

10、 取得所有的 key:hkeys testjava;

11、 取得所有的内容:hvals testjava;

12、 获取所有的 key 与 value:hgetall testjava;

三、列表类型(List)
List 属于一种链表的数据类型,那么在整个的链表的处理之中主要的功能就是 push、pop。
1、 向列表中存放数据:lpush infos java;

2、 取得所有的元素(索引从 0 开始):lrange infos 0 1;
· 如果现在要想输出全部内容,则将结束索引设置为“-1”即可;

3、 通过尾部保存数据:rpush infos scal;

4、 在指定内容前追加内容:linsert infos before java oracle;
在指定的内容后追加内容:linsert infos after java cloud;

5、 修改指定索引的内容:lset infos 0 hbase;
· 最后添加在顶部的数据索引就是 0;

6、 删除数据:lrem infos 1 tomcat;

7、 删除指定范围之外的数据:ltrim infos 0 3;

8、 弹出数据:lpop infos;

9、 将弹出的数据保存到新集合:rpoplpush infos msgs;

10、 取得指定索引的数据:lindex msgs 0;

11、 取得集合的元素个数:llen msgs。

四、无序集合类型(Set)
Set 里面保存的所有的无序处理数据,有如下的操作命令 。
1、 向集合之中追加元素:sadd infos java;

2、 查询 set 集合的全部内容:smembers infos;
· 这个时候可以发现在 Set 集合之中所保存的数据都是无序的状态;
3、 删除集合元素:srem infos java;

4、 随机弹出一个元素:spop infos;

5、 返回集合差集:

6、 将差值保存在新的集合之中:sdiffstore myinfo infoa infob;

7、 交集计算:sinter infoa infob;

8、 将交集计算结果保存到新的集合之中:sinterstore myinfo2 infoa infob;

9、 并集计算(无重复):sunion infoa infob;

10、 将并集结果保存到新的集合之中:sunionstore myinfo3 infoa infob;

11、 将一个 Set 集合的删除数据保存到另外一个集合:smove infoa infob hadoop
· 从 infoa 这个集合里面删除掉 hadoop 的数据信息,而后将这个数据保存给 infob

12、 返回集合个数:scard infoa;

13、 判断集合中是否有某一元素:sismember infoa hadoop;

14、 随机返回数据并且不删除:srandmember infoa。

五、有序集合(SortedSet)
Set 集合里面是没有任何顺序的保存,所以在 Redis 里面就提供有另外一套 Set 集合保存,称为有序存储。所谓的有序可以理解为它有两个列:一个列是存放内容,另外一个列是存放索引编号。
1、 追加新的集合:
zadd infos 0 hadoop
zadd infos 2 oracle
zadd infos 5 kafka
zadd infos 1 java
zadd infos 1 tomcat

2、 查看数据内容:zrange infos 0 -1
· 查看分数:zrange infos 0 -1 withscores;
|- 假设说你现在要进行一个综合的数据排名,例如:全球网站排名系统;

3、 删除集合数据:zrem infos java;

4、 数据(分数)增长:zincrby infos 10 hadoop;

5、 取得指定元素的索引数据:zrank infos hadoop;

6、 数据索引反转:
· “zrevrank infos tomcat”:原本的 tomcat 的索引值为 0,现在反转之后是 3,索引反转;
· “zrevrank infos hadoop”:原本的 hadoop 的索引值为 3,现在反转之后是 0,索引反转。

7、 反转后取得数据(由升序变为了降序):zrevrange infos 0 -1 withscores;

8、 取出指定索引范围的数据:zrangebyscore infos 0 2 withscores;

9、 取得指定分数范围的元素数量:zcount infos 1 20;

10、 取得指定集合的个数:zcard infos;

2.1 Redis安装与配置: 1. 下载Redis安装包:官网下载地址为 https://redis.io/download 。 2. 解压Redis安装包:使用命令 tar -zxvf redis-x.x.x.tar.gz 进行解压。 3. 进入解压后的Redis目录,使用命令 make 编译Redis。 4. 编译完成后,使用命令 make test 进行测试。 5. 安装Redis:使用命令 make install 进行安装。 6. 配置Redis:进入Redis目录中的 /redis.conf 文件,修改配置文件中的端口号、密码等参数。 7. 启动Redis:使用命令 redis-server 启动Redis服务。 2.2 Redis数据操作Redis是一种内存数据库,它支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等。 下面是Java使用Redis操作示例: 1. 引入Redis依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> 2. 连接Redis: Jedis jedis = new Jedis("localhost"); 3. 存储数据: jedis.set("key", "value"); 4. 获取数据: String value = jedis.get("key"); 5. 删除数据: jedis.del("key"); 6. 存储哈希: Map<String, String> map = new HashMap<>(); map.put("field1", "value1"); map.put("field2", "value2"); jedis.hmset("key", map); 7. 获取哈希: Map<String, String> map = jedis.hgetAll("key"); 8. 存储列表: jedis.lpush("key", "value1", "value2"); 9. 获取列表: List<String> list = jedis.lrange("key", 0, -1); 10. 存储集合: jedis.sadd("key", "value1", "value2"); 11. 获取集合: Set<String> set = jedis.smembers("key"); 12. 存储有序集合: jedis.zadd("key", 1, "value1"); jedis.zadd("key", 2, "value2"); 13. 获取有序集合: Set<String> set = jedis.zrange("key", 0, -1);
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值