Redis的简单使用和介绍

package com.jedis.test; import redis.clients.jedis.Jedis; /**
* Created by Administrator on 2017-07-13.
*/
public class JedisDemo1 {
/**
* 单实例测试
*/
public static void main(String[] args) {
//设置IP地址和端口
Jedis jedis=new Jedis("192.168.21.195",6379);
//保存数据
jedis.set("name","lu");
//获取数据
String value=jedis.get("name");
System.out.println("name对应的:"+value);
//释放资源
jedis.close();
}
}
jedis单实例测试
package com.jedis.test; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; import java.util.Date; /**
*连接池的方式连接
*/
public class JedisDemo2 {
public static void main(String[] args) {
//获取连接池的配置
JedisPoolConfig config = new JedisPoolConfig();
//设置最大连接数
config.setMaxTotal(30);
//设置最大空闲连接数
config.setMaxIdle(10);
//获得连接池
JedisPool jedisPool=new JedisPool(config,"192.168.21.195",6379);
//获得核心对象
Jedis jedis=null;
try {
//通过连接池获得连接
jedis=jedisPool.getResource();
//设置数据
jedis.set("name","张三");
//获取数据
String value = jedis.get("name");
System.out.println("name对应的value:"+value);
}catch (Exception e){
e.printStackTrace();
}finally {
if (jedis!=null){
jedis.close();
}
if (jedisPool!=null){
jedisPool.close();
}
}
} }
jedis连接池方式连接
redis 127.0.0.1:6379> set company lu
OK
redis 127.0.0.1:6379> get company
"lu"
redis 127.0.0.1:6379> getset company baidu
"lu"
redis 127.0.0.1:6379> get company
"baidu"
redis 127.0.0.1:6379> del company
(integer) 1
redis 127.0.0.1:6379> get company
(nil)
redis 127.0.0.1:6379> incr num
(integer) 1
redis 127.0.0.1:6379> get num
"1"
redis 127.0.0.1:6379> incr num
(integer) 2
redis 127.0.0.1:6379> get num
"2"
redis 127.0.0.1:6379> incr name
(error) ERR value is not an integer or out of range
redis 127.0.0.1:6379> decr num
(integer) 1
redis 127.0.0.1:6379> decr num2
(integer) -1
redis 127.0.0.1:6379> incrby num 5
(integer) 6
redis 127.0.0.1:6379> incrby num3 5
(integer) 5
redis 127.0.0.1:6379> decrby num3 2
(integer) 3
redis 127.0.0.1:6379> append num 5
(integer) 2
redis 127.0.0.1:6379> get num
"65"
redis 127.0.0.1:6379> append num4 4
(integer) 1
redis 127.0.0.1:6379> get num4
"4"
存储String常用命令
13、存储Hash
String Key和String Value的map容器
每一个Hash可以存储4294967295个键值对
储存Hash常用命令:
赋值
取值删除增加数字
自学命令
redis 127.0.0.1:6379> hset myhash username jack
(integer) 1
redis 127.0.0.1:6379> hset myhash age 18
(integer) 1
redis 127.0.0.1:6379> hmset myhash2 username rose age 21
OK
redis 127.0.0.1:6379> hget myhash username
"jack"
redis 127.0.0.1:6379> hget myhash age
"18"
redis 127.0.0.1:6379> hmget myhash username age
1) "jack"
2) "18"
redis 127.0.0.1:6379> hgetall myhash
1) "username"
2) "jack"
3) "age"
4) "18"
redis 127.0.0.1:6379> hdel myhash2 username
(integer) 1
redis 127.0.0.1:6379> hgetall myhash2
1) "age"
2) "21"
redis 127.0.0.1:6379> del myhash2
(integer) 1
redis 127.0.0.1:6379> hgetall myhash2
(empty list or set)
redis 127.0.0.1:6379> hincrby myhash age 5
(integer) 23
redis 127.0.0.1:6379> hexists myhash username
(integer) 1
redis 127.0.0.1:6379> hexists myhash password
(integer) 0
redis 127.0.0.1:6379> hlen myhash
(integer) 2
redis 127.0.0.1:6379> hkeys myhash
1) "username"
2) "age"
redis 127.0.0.1:6379> hvalues myhash
(error) ERR unknown command 'hvalues'
redis 127.0.0.1:6379> hvals myhash
1) "jack"
2) "23"
存储Hash常用命令
14、存储list
ArrayList使用数组方式
LinkedList使用双向链接方式
双向链表中增加数据
双向链表中删除数据
存储list常用命令:
两端添加
两端弹出
扩展命令
查看列表
获取列表元素个数
redis 127.0.0.1:6379> lpush mylist a b c
(integer) 3
redis 127.0.0.1:6379> lpush mylist 1 2 3
(integer) 6
redis 127.0.0.1:6379> rpush mylist2 a b c
(integer) 3
redis 127.0.0.1:6379> rpush mylist2 1 2 3
(integer) 6
redis 127.0.0.1:6379> lrange mylist 0 5
1) "3"
2) "2"
3) "1"
4) "c"
5) "b"
6) "a"
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "b"
3) "c"
4) "1"
5) "2"
6) "3"
redis 127.0.0.1:6379> lrange mylist2 0 -2
1) "a"
2) "b"
3) "c"
4) "1"
5) "2"
redis 127.0.0.1:6379> lpop mylist
"3"
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "2"
2) "1"
3) "c"
4) "b"
5) "a"
redis 127.0.0.1:6379> rpop mylist
"a"
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "b"
3) "c"
4) "1"
5) "2"
6) "3"
redis 127.0.0.1:6379> rpop mylist2
"3"
redis 127.0.0.1:6379> rpop mylist2
"2"
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "b"
3) "c"
4) "1"
redis 127.0.0.1:6379> llen mylist
(integer) 4
redis 127.0.0.1:6379> llen mylist2
(integer) 4
redis 127.0.0.1:6379> llen mylist3
(integer) 0
redis 127.0.0.1:6379> lpushx mylist x
(integer) 5
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "x"
2) "2"
3) "1"
4) "c"
5) "b"
redis 127.0.0.1:6379> lpushx mylist3 x
(integer) 0
redis 127.0.0.1:6379> rpushx mylist2 x
(integer) 5
redis 127.0.0.1:6379> lrange mylist2
(error) ERR wrong number of arguments for 'lrange' command
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "b"
3) "c"
4) "1"
5) "x"
redis 127.0.0.1:6379> lpush mylist3 1 2 3
(integer) 3
redis 127.0.0.1:6379> lpush mylist3 1 2 3
(integer) 6
redis 127.0.0.1:6379> lpush mylist3 1 2 3
(integer) 9
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "3"
2) "2"
3) "1"
4) "3"
5) "2"
6) "1"
7) "3"
8) "2"
9) "1"
redis 127.0.0.1:6379> lrem mylist3 2 3
(integer) 2
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "2"
2) "1"
3) "2"
4) "1"
5) "3"
6) "2"
7) "1"
redis 127.0.0.1:6379> lrem mylist3 -2 1
(integer) 2
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "2"
2) "1"
3) "2"
4) "3"
5) "2"
redis 127.0.0.1:6379> lrem mylist3 0 2
(integer) 3
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "1"
2) "3"
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "x"
2) "2"
3) "1"
4) "c"
5) "b"
redis 127.0.0.1:6379> lset mylist 3 mmm
OK
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "x"
2) "2"
3) "1"
4) "mmm"
5) "b"
redis 127.0.0.1:6379> lpush mylist4 a b c
(integer) 3
redis 127.0.0.1:6379> lpush mylist4 a b c
(integer) 6
redis 127.0.0.1:6379> lrange mylist4 0 -1
1) "c"
2) "b"
3) "a"
4) "c"
5) "b"
6) "a"
redis 127.0.0.1:6379> linsert mylist4 before b 11
(integer) 7
redis 127.0.0.1:6379> lrange mylist4 0 -1
1) "c"
2) "11"
3) "b"
4) "a"
5) "c"
6) "b"
7) "a"
redis 127.0.0.1:6379> linsert mylist4 after b 22
(integer) 8
redis 127.0.0.1:6379> lrange mylist4 0 -1
1) "c"
2) "11"
3) "b"
4) "22"
5) "a"
6) "c"
7) "b"
8) "a"
redis 127.0.0.1:6379> lpush mylist5 1 2 3
(integer) 3
redis 127.0.0.1:6379> lpush mylist6 a b c
(integer) 3
redis 127.0.0.1:6379> rpoplpush mylist5 mylist6
"1"
redis 127.0.0.1:6379> lrange mylist5 0 -1
1) "3"
2) "2"
redis 127.0.0.1:6379> lrange mylist6 0 -1
1) "1"
2) "c"
3) "b"
4) "a"
存储list常用命令
15、存储Set
和List类型不同的是,Set集合中不允许出现重复的元素
存储set常用命令:
添加/删除元素
获得集合中的元素
集合中的差集运算
集合中的交集运算
集合中的并集运算
扩展命令
redis 127.0.0.1:6379> sadd myset a b c
(integer) 3
redis 127.0.0.1:6379> sadd myset a
(integer) 0
redis 127.0.0.1:6379> sadd myset 1 2 3
(integer) 3
redis 127.0.0.1:6379> srem myset 1 2
(integer) 2
redis 127.0.0.1:6379> smembers myset
1) "3"
2) "c"
3) "a"
4) "b"
redis 127.0.0.1:6379> sismember myset a
(integer) 1
redis 127.0.0.1:6379> sismember myset 6
(integer) 0
redis 127.0.0.1:6379> saaa mya1 a b c
(error) ERR unknown command 'saaa'
redis 127.0.0.1:6379> sadd mya1 a b c
(integer) 3
redis 127.0.0.1:6379> sadd mya2 a c 1 2
(integer) 4
redis 127.0.0.1:6379> sdiff mya1 mya2
1) "b"
redis 127.0.0.1:6379> sinter mya1 mya2
1) "c"
2) "a"
redis 127.0.0.1:6379> sunion mya1 mya2
1) "1"
2) "a"
3) "b"
4) "c"
5) "2"
redis 127.0.0.1:6379> smembers myset
1) "3"
2) "c"
3) "a"
4) "b"
redis 127.0.0.1:6379> scard myset
(integer) 4
redis 127.0.0.1:6379> srandmember myset
"a"
redis 127.0.0.1:6379> srandmember myset
"a"
redis 127.0.0.1:6379> srandmember myset
"3"
redis 127.0.0.1:6379> sdiffstore my1 mya1 mya2
(integer) 1
redis 127.0.0.1:6379> smembers my1
1) "b"
redis 127.0.0.1:6379> sinterstore my2 mya1 mya2
(integer) 2
redis 127.0.0.1:6379> smembers my2
1) "c"
2) "a"
redis 127.0.0.1:6379> sunionstore my3 mya1 mya2
(integer) 5
redis 127.0.0.1:6379> smembers my3
1) "1"
2) "a"
3) "b"
4) "c"
5) "2"
储存Set常用命令
存储Set使用场景
跟踪一些唯一性数据
用于维护数据对象之间的关联关系
16、存储Sorted-Set
Sorted-Set中的成员在集合中的位置是有序的
存储Sorted-Set常用命令:
添加元素
删除元素
获得元素
范围查询
扩展命令
redis 127.0.0.1:6379> zadd mysort 70 zs 80 ls 90 ww
(integer) 3
redis 127.0.0.1:6379> zadd mysort zs
(error) ERR wrong number of arguments for 'zadd' command
redis 127.0.0.1:6379> zadd mysort 100 zs
(integer) 0
redis 127.0.0.1:6379> zadd mysort 60 tom
(integer) 1
redis 127.0.0.1:6379> zscore mysort zs
"100"
redis 127.0.0.1:6379> zcard mysort
(integer) 4
redis 127.0.0.1:6379> zrem mysort tom ww
(integer) 2
redis 127.0.0.1:6379> zcard mysort
(integer) 2
redis 127.0.0.1:6379> zadd mysort 85 jack 95 rose
(integer) 2
redis 127.0.0.1:6379> zrange mysort 0 -1
1) "ls"
2) "jack"
3) "rose"
4) "zs"
redis 127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "ls"
2) "80"
3) "jack"
4) "85"
5) "rose"
6) "95"
7) "zs"
8) "100"
redis 127.0.0.1:6379> zrevrange mysort 0 -1 withscores
1) "zs"
2) "100"
3) "rose"
4) "95"
5) "jack"
6) "85"
7) "ls"
8) "80"
redis 127.0.0.1:6379> zremrangebyrank mysort 0 4
(integer) 4
redis 127.0.0.1:6379> zrevrange mysort 0 -1 withscores
(empty list or set)
redis 127.0.0.1:6379> zadd mysort 80 zs 90 ls 100 ww
(integer) 3
redis 127.0.0.1:6379> zremrangebyscore mysort 80 100
(integer) 3
redis 127.0.0.1:6379> zrevrange mysort 0 -1 withscores
(empty list or set)
redis 127.0.0.1:6379> zadd mysort 70 zs 80 ls 90 ww
(integer) 3
redis 127.0.0.1:6379> zrangebyscore mysort 0 100
1) "zs"
2) "ls"
3) "ww"
redis 127.0.0.1:6379> zrangebyscore mysort 0 100 withscore
(error) ERR syntax error
redis 127.0.0.1:6379> zrangebyscore mysort 0 100 withscores
1) "zs"
2) "70"
3) "ls"
4) "80"
5) "ww"
6) "90"
redis 127.0.0.1:6379> byscore mysort 0 100 withscores limit 0 2
1) "zs"
2) "70"
3) "ls"
4) "80"
redis 127.0.0.1:6379> zincrby mysort 3 ls
"83"
redis 127.0.0.1:6379> zscore mysort ls
"83"
redis 127.0.0.1:6379> zcount mysort 80 90
(integer) 2
Sorted-Set常用命令
Sorted-Set使用场景
大型在线游戏积分排行榜
构建索引数据
17、Redis特性
切换数据库
select 0
移动key到某一个数据库
move key 1
开启事务
multi
提交事务
exec
回滚事务
discard
18、Redis持久化
持久化方式:
RDB方式(配置以多少秒将数据储存到硬盘)
AOF方式(读取日志文件)
无持久化(缓存方式)
同时使用RDB和AOF
Redis的简单使用和介绍的更多相关文章
- Redis主从复制简单介绍
由于本地环境的使用,所以搭建一个本地的Redis集群,本篇讲解Redis主从复制集群的搭建,使用的平台是Windows,搭建的思路和Linux上基本一致! (精读阅读本篇可能花费您15分钟,略读需5分 ...
- redis 的简单命令
以下实例讲解了如何启动 redis 客户端: 启动 redis 客户端,打开终端并输入命令 redis-cli.该命令会连接本地的 redis 服务. $redis-cli redis > re ...
- python内置函数的简单使用和介绍
"""内置函数的简单使用和介绍参考链接:https://docs.python.org/3/library/functions.html ""&quo ...
- Redis的简单了解以及主从复制
1.Redis的简单了解 Redis是一种高性能的分布式NoSql数据库,持久存储,高并发,数据类型丰富,通过现场申请内存空间,同时可以配置虚拟内存.五种数据类型:string(字符串,这种格式和me ...
- Redis 的简单运算
Redis 的简单运算 命令 说明 备注 incr key 在原字段上加 1 只能对整数操作 incrby key increment 在原字段上加上整数 (increment) 只能对整数操作 de ...
- 5.如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?
作者:中华石杉 面试题 如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么? 面试官心理分析 其实问这个问题,主要是考考你,redis ...
- python redis 实现简单的消息订阅
python + redis 实现简单的消息订阅 订阅端 import redis from functools import wraps class Subscribe: def __init__( ...
- redis事务及相关命令介绍
redis事务及相关命令介绍 一.概述:和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制.在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事 ...
- Redis的简单介绍及在Windows下环境搭建
简单介绍 1,Redis是什么 最直接的还是看官方的定义吧. Redis is an open source (BSD licensed), in-memory data structure stor ...
随机推荐
- C++ 多态与虚函数
1.多态的概念 由虚函数实现的动态多态性就是:同一类族中不同类的对象,对同一函数调用作出不同的响应. 先看下面这个简单的例子: #include<iostream> using std:: ...
- .Net Core在Ubuntu上操作MySql折腾实录
.Net Core 2.0 发布也这么久了,一直想着折腾着玩玩,无奈一直没时间,这几天准备开始好好学习下C#在跨平台方面的应用,记录下来以备自己以后回忆.学习. 本篇博客的主要内容: MySql在Ub ...
- 「设计模式」JavaScript - 设计模式之单例模式与场景实践
单例介绍 上次总结了设计模式中的module模式,可能没有真真正正的使用在场景中,发现效果并不好,想要使用起来却不那么得心应手, 所以这次我打算换一种方式~~从简单的场景中来看单例模式, 因为Java ...
- number 类型转换 符号
function convert(sValue, sDataType) { switch(sDataType) { case “int”: return parseIn ...
- javascript 关于 this 作用域链
使用 function f() {} 或者 var f = function() {} 来定义的函数,this 是指向 全局对象 var a = { b: 1, c: funct ...
- HTML DOM应用案例2
<html> <head> <title>day03</title> <script type="text/javascript&quo ...
- Nginx实现负载均衡&Nginx缓存功能
一.Nginx是什么 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambl ...
- Scrum Meeting Alpha - 6
Scrum Meeting Alpha - 6 NewTeam 2017/10/31 地点:主南203 任务反馈 团队成员 完成任务 计划任务 安万贺 完成了个人博客和班级列表部分API的包装 完成个 ...
- 基于HTML5的WebGL经典3D虚拟机房漫游动画
第一人称在 3D 中的用法要参考第一人称在射击游戏中的使用,第一人称射击游戏(FPS)是以第一人称视角为中心围绕枪和其他武器为基础的视频游戏类型 ; 也就是说,玩家通过主角的眼睛来体验动作.自从流派开 ...
- Scanner扫描器
扫描器 : Scanner 接收用户在键盘上的输入内容 是Java自带的一个工具,但是默认情况下没有在我们写的程序中使用三个步骤:1. 导入扫描器 : 导入类文件 import java.u ...