Redis快速入门

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

01简介


这是redis中文官网的介绍


Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

它支持多种类型的数据结构,如字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sortedsets)与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。Redis内置了复制(replication),LUA脚本(Luascripting),LRU驱动事件(LRUeviction),事务(transactions)和不同级别的磁盘持久化(persistence),并通过Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(highavailability)。


02Java使用Redis



package com.redis; import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Set;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import redis.clients.jedis.JedisShardInfo;import redis.clients.jedis.ShardedJedis;import redis.clients.jedis.ShardedJedisPool;import redis.clients.jedis.SortingParams; public class RedisClient {     private Jedis jedis;//非切片客户端连接    private JedisPool jedisPool;//非切片连接池    private ShardedJedis shardedJedis;//切片客户端连接    private ShardedJedisPool shardedJedisPool;//切片连接池        public RedisClient() {         initialPool();         initialShardedPool();         shardedJedis = shardedJedisPool.getResource();         jedis = jedisPool.getResource();     }     /**     * 初始化非切片池     */    private void initialPool() {         // 池基本配置         JedisPoolConfig config = new JedisPoolConfig();         config.setMaxActive(20);         config.setMaxIdle(5);         config.setMaxWait(1000l);         config.setTestOnBorrow(false);              jedisPool = new JedisPool(config,"127.0.0.1",6379);    }    /**      * 初始化切片池      */     private void initialShardedPool() {         // 池基本配置         JedisPoolConfig config = new JedisPoolConfig();         config.setMaxActive(20);         config.setMaxIdle(5);         config.setMaxWait(1000l);         config.setTestOnBorrow(false);         // slave链接         List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();         shards.add(new JedisShardInfo("127.0.0.1", 6379, "master"));         // 构造池         shardedJedisPool = new ShardedJedisPool(config, shards);     }      public void show() {             KeyOperate();         StringOperate();         ListOperate();         SetOperate();        SortedSetOperate();        HashOperate();         jedisPool.returnResource(jedis);        shardedJedisPool.returnResource(shardedJedis);    }       private void KeyOperate() {         //todo      }      private void StringOperate() {         //todo      }      private void ListOperate() {         //todo      }      private void SetOperate() {         //todo      }      private void SortedSetOperate() {         //todo      }      private void HashOperate() {         //todo      }}

1、String字符串

//设置 redis 字符串数据 jedis.set("runoobkey", "www.runoob.com"); String str = jedis.get("runoobkey");

2、List(列表)


//存储数据到列表中jedis.lpush("site-list", "Runoob");jedis.lpush("site-list", "Google");jedis.lpush("site-list", "Taobao");// 获取存储的数据并输出List<String> list = jedis.lrange("site-list", 0 ,2);for(int i=0; i<list.size(); i++) {    System.out.println("列表项为: "+list.get(i));}

3、Keys 实例


// 获取数据并输出Set<String> keys = jedis.keys("*"); Iterator<String> it=keys.iterator() ;   while(it.hasNext()){       String key = it.next();       System.out.println(key);   }



03常用命令


1)连接操作命令

   quit:关闭连接(connection)

   auth:简单密码认证

   help cmd:查看cmd帮助,例如:help quit

   

   2)持久化

   save:将数据同步保存到磁盘

   bgsave:将数据异步保存到磁盘

   lastsave:返回上次成功将数据保存到磁盘的Unix时戳

   shundown:将数据同步保存到磁盘,然后关闭服务

   

   3)远程服务控制

   info:提供服务器的信息和统计

   monitor:实时转储收到的请求

   slaveof:改变复制策略设置

   config:在运行时配置Redis服务器

   

   4)对value操作的命令

   exists(key):确认一个key是否存在

   del(key):删除一个key

   type(key):返回值的类型

   keys(pattern):返回满足给定pattern的所有key

   randomkey:随机返回key空间的一个

   keyrename(oldname, newname):重命名key

   dbsize:返回当前数据库中key的数目

   expire:设定一个key的活动时间(s)

   ttl:获得一个key的活动时间

   select(index):按索引查询

   move(key, dbindex):移动当前数据库中的key到dbindex数据库

   flushdb:删除当前选择数据库中的所有key

   flushall:删除所有数据库中的所有key

   

   5)String

   set(key, value):给数据库中名称为key的string赋予值value

   get(key):返回数据库中名称为key的string的value

   getset(key, value):给名称为key的string赋予上一次的value

   mget(key1, key2,…, key N):返回库中多个string的value

   setnx(key, value):添加string,名称为key,值为value

   setex(key, time, value):向库中添加string,设定过期时间time

   mset(key N, value N):批量设置多个string的值

   msetnx(key N, value N):如果所有名称为key i的string都不存在

   incr(key):名称为key的string增1操作

   incrby(key, integer):名称为key的string增加integer

   decr(key):名称为key的string减1操作

   decrby(key, integer):名称为key的string减少integer

   append(key, value):名称为key的string的值附加value

   substr(key, start, end):返回名称为key的string的value的子串

   

   6)List

   rpush(key, value):在名称为key的list尾添加一个值为value的元素

   lpush(key, value):在名称为key的list头添加一个值为value的 元素

   llen(key):返回名称为key的list的长度

   lrange(key, start, end):返回名称为key的list中start至end之间的元素

   ltrim(key, start, end):截取名称为key的list

   lindex(key, index):返回名称为key的list中index位置的元素

   lset(key, index, value):给名称为key的list中index位置的元素赋值

   lrem(key, count, value):删除count个key的list中值为value的元素

   lpop(key):返回并删除名称为key的list中的首元素

   rpop(key):返回并删除名称为key的list中的尾元素

   blpop(key1, key2,… key N, timeout):lpop命令的block版本。

   brpop(key1, key2,… key N, timeout):rpop的block版本。

   rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

   

   7)Set

   sadd(key, member):向名称为key的set中添加元素member

   srem(key, member) :删除名称为key的set中的元素member

   spop(key) :随机返回并删除名称为key的set中一个元素

   smove(srckey, dstkey, member) :移到集合元素

   scard(key) :返回名称为key的set的基数

   sismember(key, member) :member是否是名称为key的set的元素

   sinter(key1, key2,…key N) :求交集

   sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合

   sunion(key1, (keys)) :求并集

   sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合

   sdiff(key1, (keys)) :求差集

   sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合

   smembers(key) :返回名称为key的set的所有元素

   srandmember(key) :随机返回名称为key的set的一个元素

   

   8)Hash

   hset(key, field, value):向名称为key的hash中添加元素field

   hget(key, field):返回名称为key的hash中field对应的value

   hmget(key, (fields)):返回名称为key的hash中field i对应的value

   hmset(key, (fields)):向名称为key的hash中添加元素field

   hincrby(key, field, integer):将名称为key的hash中field的value增加integer

   hexists(key, field):名称为key的hash中是否存在键为field的域

   hdel(key, field):删除名称为key的hash中键为field的域

   hlen(key):返回名称为key的hash中元素个数

   hkeys(key):返回名称为key的hash中所有键

   hvals(key):返回名称为key的hash中所有键对应的value

   hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5月前
|
存储 NoSQL 算法
Redis系列学习文章分享---第十篇(Redis快速入门之附近商铺+用户签到+UV统计)
Redis系列学习文章分享---第十篇(Redis快速入门之附近商铺+用户签到+UV统计)
41 0
|
5月前
|
存储 NoSQL Redis
Redis系列学习文章分享---第九篇(Redis快速入门之好友关注--关注和取关 -共同关注 -Feed流实现方案分析 -推送到粉丝收件箱 -滚动分页查询)
Redis系列学习文章分享---第九篇(Redis快速入门之好友关注--关注和取关 -共同关注 -Feed流实现方案分析 -推送到粉丝收件箱 -滚动分页查询)
66 0
|
5月前
|
消息中间件 负载均衡 NoSQL
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
73 0
|
3月前
|
JSON NoSQL Redis
Redis 作为向量数据库快速入门指南
Redis 作为向量数据库快速入门指南
163 1
|
5月前
|
存储 NoSQL 关系型数据库
Redis系列学习文章分享---第一篇(Redis快速入门之初始Redis--NoSql+安装redis+客户端+常用命令)
Redis系列学习文章分享---第一篇(Redis快速入门之初始Redis--NoSql+安装redis+客户端+常用命令)
147 1
|
4月前
|
NoSQL Java Redis
Redis16-RedisTemplate快速入门,max -idle,min-idle,max-wait,用set的方法,opsForValue().set的方法
Redis16-RedisTemplate快速入门,max -idle,min-idle,max-wait,用set的方法,opsForValue().set的方法
|
4月前
|
Java Redis 数据安全/隐私保护
Redis13的Java客户端-Jedis快速入门,建立连接的写法,ip地址,设置密码密码,选择库的写法
Redis13的Java客户端-Jedis快速入门,建立连接的写法,ip地址,设置密码密码,选择库的写法
|
5月前
|
存储 NoSQL Java
Redis系列学习文章分享---第八篇(Redis快速入门之达人探店--发布探店笔记 + 查看探店笔记 + 点赞功能 + 点赞排行榜)
Redis系列学习文章分享---第八篇(Redis快速入门之达人探店--发布探店笔记 + 查看探店笔记 + 点赞功能 + 点赞排行榜)
31 0
|
5月前
|
缓存 NoSQL Java
Redis系列学习文章分享---第四篇(Redis快速入门之Java客户端--商户查询缓存+更新+双写一致+穿透+雪崩+击穿+工具封装)
Redis系列学习文章分享---第四篇(Redis快速入门之Java客户端--商户查询缓存+更新+双写一致+穿透+雪崩+击穿+工具封装)
71 0
|
5月前
|
存储 NoSQL Java
Redis系列学习文章分享---第三篇(Redis快速入门之Java客户端--短信登录+session+验证码+拦截器+登录刷新)
Redis系列学习文章分享---第三篇(Redis快速入门之Java客户端--短信登录+session+验证码+拦截器+登录刷新)
100 0
下一篇
无影云桌面