redis学习笔记,随便记记

原创 2016年08月29日 14:31:34
安装:yum install redis
启动服务:redis-server

连接:redis-cli

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

常用key value命令
一:字符串
set key value
重复set一个key会替换原本旧的
二:哈希 
HMSET user:1 (key value值对,以空格分开)
二:列表 
可以添加重复
添加 lpush key value
查看 lrange key 0 10
三:集合
不可以添加重复
添加 sadd key value
查看 smembers key
四:集合排序
添加 zadd key 排序值 value
不查看排序值 ZRANGEBYSCORE key 0 1000

查看排序值 ZRANGE key 0 1000 WITHSCORES

五:Redis HyperLogLog

用于统计数据数量count用

添加 pfadd key value

查看数量 pfcount key

六:redis发布订阅

实现监听:subscribe 通道名

发送数据给其他监听客户端 publish 通道名 字符串数据

七:redis事务

开始事务 multi

结束事务 exec 所有中间执行结果在结束事务后打印出来

八:redis脚本

EVAL script numkeys key [key ...] arg [arg ...]
下面的例子说明了 Redis 脚本是如何工作的:
redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second

1) "key1"
2) "key2"
3) "first"
4) "second"
其他与java连接操作

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple;

public class test {

	public static void main(String[] args) throws Exception {
		// Connecting to Redis server on localhost
		Jedis jedis = new Jedis("localhost");
		System.out.println("Connection to server sucessfully");
		// check whether server is running or not
		System.out.println("Server is running: " + jedis.ping());
		Map<String, String> map = new HashMap<String, String>();
		map.put("key1", "123");
		map.put("key2", "456");
		map.put("key3", "789");
		ByteArrayOutputStream bo = new ByteArrayOutputStream();
		ObjectOutputStream oo = new ObjectOutputStream(bo);
		oo.writeObject(map);
		byte[] bytes = bo.toByteArray();
		bo.close();
		oo.close();
		jedis.set("测试set".getBytes(), bytes);
		byte[] bs = jedis.get("测试set".getBytes());
		ByteArrayInputStream read = new ByteArrayInputStream(bs);
		ObjectInputStream in = new ObjectInputStream(read);
		Object readObject = in.readObject();
		System.out.println("测试set添加byte:"+readObject); //key-value一对一
		jedis.lpush("tutorial-list", "Redis");
	      jedis.lpush("tutorial-list", "Mongodb");
	      jedis.lpush("tutorial-list", "Mongodb");
	      jedis.lpush("tutorial-list", "Mysql");
	     List<String> list = jedis.lrange("tutorial-list", 0 ,5);
	     System.out.println("测试lpush添加:"+list); //value值可以重复
	     jedis.sadd("测试sadd", "123");
	     jedis.sadd("测试sadd", "456");
	     jedis.sadd("测试sadd", "123");
	     jedis.sadd("测试sadd", "789");
	     Set<String> smembers = jedis.smembers("测试sadd");
	     System.out.println("测试sadd添加:"+smembers); //value值不可以重复
	     jedis.zadd("测试zadd", 3, "123");
	     jedis.zadd("测试zadd", 1, "123");
	     jedis.zadd("测试zadd", 2, "456");
	     jedis.zadd("测试zadd", 4, "789");
	     Set<String> zrange = jedis.zrange("测试zadd", 0, 10);
	     System.out.println("测试zadd添加zrange输出:"+zrange); //value值不可以重复
	     Set<String> zrangeByScore = jedis.zrangeByScore("测试zadd", 0, 10);
	     System.out.println("测试zadd添加zrangeByScore输出:"+zrangeByScore);
	     Set<Tuple> zrangeWithScores = jedis.zrangeWithScores("测试zadd", 0, 10);
	    System.out.println("测试zadd添加zrangeWithScores输出:"+zrangeWithScores);
	     jedis.pfadd("测试pfadd", "123");
	    jedis.pfadd("测试pfadd", "456");
	    jedis.pfadd("测试pfadd", "789");
	    jedis.pfadd("测试pfadd", "123");
	    long pfcount = jedis.pfcount("测试pfadd");
	    System.out.println("测试pfadd返回value数量:"+pfcount); //value值不可以重复
	     Set<String> keys = jedis.keys("*");
		System.out.println("所有的key:"+keys);
		Long del = jedis.del("测试set");
		System.out.println("删除key返回数量:"+del);
		Object eval = jedis.eval("return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}", 2, "key1","key2","value1","value2");
		System.out.println("测试eval:"+eval);
		jedis.close();
	}
}
输出结果:

Connection to server sucessfully
Server is running: PONG
测试set添加byte:{key3=789, key2=456, key1=123}
测试lpush添加:[Mysql, Mongodb, Mongodb, Redis]
测试sadd添加:[123, 456, 789]
测试zadd添加zrange输出:[123, 456, 789]
测试zadd添加zrangeByScore输出:[123, 456, 789]
测试zadd添加zrangeWithScores输出:[[[49, 50, 51],1.0], [[52, 53, 54],2.0], [[55, 56, 57],4.0]]
测试pfadd返回value数量:3
所有的key:[测试sadd, tutorial-list, 测试zadd, 测试set, 测试pfadd]
删除key返回数量:1
测试eval:[key1, key2, value1, value2]

重启redis,保存在内存中的所有数据消失

相关文章推荐

redis之 zadd、zremrangebyscore、zremrangebyrank、zscore、zcard、zcount、zrangebyscore、zinczrevrankzrevrange

1.zadd 向名称为 key 的 zset 中添加元素 member, score 用于排序。如果该元素已经存在,则根据 score 更新该元素的顺序 redis 12...

Redis入门很简单之六【Jedis常见操作】

之前介绍了Jedis的基本操作,连接池的支持,以及和Spring的整合。接下来的内容,继续Jedis的最为常见的操作。主要包括常用的列表(list)、集合(set)、有序集合(sorted set)、...

Redis学习笔记1--入门篇

一、Redis简介: Redis(http://redis.io)是一款开源的、高性能的键-值存储(key-value store),它是用ANSI C来编写。Redis的项目名是Remote Di...

Redis学习笔记(五) 基于Redis 3.0的集群

虽然我们搭建了一个主从架构,但是每个Redis都要保存相同的数据,这样容易造成水桶效应.而且主从架构频繁TCP连接断开也可能会对服务器和网络带来很大负担。 如果我们使用的是java客户端jedis...

redis学习笔记(13)---列表命令及实现

列表命令Redis中的List对象的类型为REDIS_LIST,是一种双向链表结构,主要支持以下几种命令: LPUSH 向列表左端添加元素,用法:LPUSH key valueRPUSH 向列表右端添...

redis学习笔记整理

redis学习笔记整理   一、... redis 环境搭建... 2 二、... redis学习笔记之数据类型... 3 三、... redis学习笔记之排序... 11 四、... redis学习...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

redis学习笔记

 什么是redis?redis 是一个基于内存的高性能key-value数据库。 (有空再补充,有理解错误或不足欢迎指正)Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像...

redis实现附近的人,但jedis中没有相关api,那么直接使用lua脚本执行。

redis实现附近的人,但jedis中没有相关api,那么直接使用lua脚本执行。 相关方法如下:package com.way;import java.util.List;import redis...

利用redis + lua解决抢红包高并发的问题

抢红包的需求分析 抢红包的场景有点像秒杀,但是要比秒杀简单点。 因为秒杀通常要和库存相关。而抢红包则可以允许有些红包没有被抢到,因为发红包的人不会有损失,没抢完的钱再退回给发红包的人即可。 另外...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:redis学习笔记,随便记记
举报原因:
原因补充:

(最多只允许输入30个字)