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 + lua解决抢红包高并发的问题

抢红包的需求分析 抢红包的场景有点像秒杀,但是要比秒杀简单点。 因为秒杀通常要和库存相关。而抢红包则可以允许有些红包没有被抢到,因为发红包的人不会有损失,没抢完的钱再退回给发红包的人即可。 另外像小米...
  • hengyunabc
  • hengyunabc
  • 2014年02月20日 20:08
  • 107274

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

redis实现附近的人,但jedis中没有相关api,那么直接使用lua脚本执行。 相关方法如下:package com.way;import java.util.List;import redis...
  • jessicway
  • jessicway
  • 2016年07月04日 11:59
  • 3535

Redis脚本

Redis脚本 使用脚本的好处: 减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延原子操作。redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。因此在编写脚本的过程...
  • wzzfeitian
  • wzzfeitian
  • 2014年12月23日 09:31
  • 17674

深入浅出Redis笔记

深入浅出Redis 1.Redis的发展史 Redis[Remote Directory Server]:远程服务器字典2.下载安装Redis1》Linux下安装Reids http://...
  • bwlab
  • bwlab
  • 2016年09月19日 10:58
  • 8357

Redis学习笔记1--入门篇

一、Redis简介: Redis(http://redis.io)是一款开源的、高性能的键-值存储(key-value store),它是用ANSI C来编写。Redis的项目名是Remote Di...
  • freebird_lb
  • freebird_lb
  • 2012年07月10日 18:55
  • 21586

redis学习笔记4:独立功能的实现

一、发布与订阅redis的发布和订阅功能由PUBLISH、 SUBSCRIBE、PSUBSCRIBE等命令组成。(一)频道的订阅与退订 服务器状态redisServer的pubsub_channe...
  • zouyu634162865
  • zouyu634162865
  • 2016年10月13日 21:01
  • 398

redis学习笔记(14)---redis基本命令总结

概述 Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,有序集合。本文详细介绍这五种数据类型的使用方法。本文命令介绍部分只是列举了基本的命令,至于具体的使用示例,可以参考Redis官方...
  • u012658346
  • u012658346
  • 2016年05月10日 15:11
  • 3210

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

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

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

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

Redis(ZADD)使用Java API实现简单排名

Redis ZADD key score member [[score member] [score member] ...] 将一个或多个 member 元素及其 score 值加入到有...
  • shaopeng5211
  • shaopeng5211
  • 2013年05月08日 17:40
  • 4572
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:redis学习笔记,随便记记
举报原因:
原因补充:

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