ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis急速入门!

2021-03-17 16:30:11  阅读:166  来源: 互联网

标签:入门 Redis redis value 获取 急速 jedis key Jedis


1,Redis介绍
概念:redis是一款高性能的NOSQL系列的非关系型数据库

存储key:value
name:zhangsan
age:12

特点:(1)数据之间没有关联关系
(2)数据存储在内存中

2,什么是Redis
Redis是用C语言开发发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的是110000次/s,写的速度是81000次/s,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:
1)字符串类型 string
2)哈希类型 hash
3)列表类型 list
4)集合类型 set
5)有序集合类型 sortedset
redis的应用场景
1)缓存(数据查询,短链接,新闻内容,商品内容)
2)聊天室的在线好友列表
3)任务队列(秒杀,抢购,12306等等)
4)应用排行耪
5)网站访问统计
6)数据过期处理(可以精确到毫秒)
7)分布式集群架构中的session分离

3,安装Redis
直接解压出来就可以使用了

*redis.windows.conf:配置文件
*redis-cli.exe:redis客户端
*redis-server.exe:redis服务器端

4,命令操作
redis的数据结构:
*redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
*value的数据结构:
1)字符串类型 string
2)哈希字符 hash:map格式
3)列表类型 list:linkedlist格式
4)集合类型 set: 不允许重复元素
5)有序集合类型 sortedset:不允许重复元素,且元素有顺序
(1)字符串类型string
1)存储:set key value
2)获取:get key
3)删除:del key
(2)哈希类型 hash
1)存储:hset key field value
2) 获取:
hget key field:获取指定的field对应的值
hgetall key :获取所有的field和value
3)删除:hdel key field
(3)列表list:可以添加一个元素到列表的头部(左边)或者尾部(右边)
1),添加:
lpush key value :将元素加入到列表左边
rpush key value : 将元素加入到列表右边
2),查询:
lrange key start end :范围获取
如:lrange key 0 -1 从头到尾
3),删除:
lpop key : 从列表最左边的而元素,并将元素返回
rpop key:从列表最右边的而元素,并将元素返回
(4)集合类型 set: 不允许重复元素
1),存储:sadd key value
2),获取:smembers key 获取ouset集合中所有元素
3),删除:srem key value 删除set集合中的某个元素
(5)有序集合类型 sortedset: 不允许重复元素,且元素有顺序
1),存储:zadd key score value
2),获取:zrange key start end 获取ouset集合中所有元素
如:zrange mysort 0 -1 withscores
3),删除:zrem key value
5,通用命令类型
(1)keys * :查询所有的键
(2)type key :获取键对应的value的类型
(3)del key :删除指定的key value

6,持久化
1,redis 是一个内存数据库,数据是临时的,不能被持久化的保存,当redis服务器被重启了数据将会丢失,我们可以将redis内存中的数据持久化保存在硬盘的文件中。
2,redis 持久化机制:
(1)RDB :默认方式,不需要进行配置,默认就使用这种机制
在一定的间隔时间中,检测key的变化情况,然后持久化数据
a.编辑redis.windows.conf 文件

after 900 sec (15 min) if at least 1 key changed

save 900 1

after 300 sec (5 min) if at least 10 keys changed

save 300 10

after 60 sec if at least 10000 keys changed

save 60 10000
b.重新启动redis服务器,并指定配置文件的名称
PS D:\Redis> .\redis-server.exe .\redis.windows.conf
(2)AOF:日志记录的方式,可以记录每一条命令的操作,可以每一次命令操作后
,持久化数据
a.编辑redis.windows.conf 文件
appendonly no(关闭aof) --> appendonly yes (开启aof)

appendfsync always :每一次操作都进行持久化

appendfsync everysec :每隔一秒进行一次持久化

appendfsync no:不进行持久化

7,Java客户端Jredis
Jredis:一款java操作redis数据库的工具
使用步骤:
1,下载jredis的jar包
2,使用
(1)快速入门测试
public void test1(){
// 1,获取连接
Jedis jedis = new Jedis(“localhost”,6379);
// 2,操作
jedis.set(“username”,“lisi”);
// 3.关闭连接
jedis.close();
}
(2)string数据结构的操作
public void test2(){
// 1,获取连接
Jedis jedis = new Jedis(“localhost”,6379);
// 2,存储
jedis.set(“username”,“zahngsan”);
// 3,获取
String username = jedis.get(“username”);
System.out.println(username);

// 可以使用setex()方法存储可以指定国企的时间 key value
jedis.setex("student",20,"laoma");

// 4.关闭连接
jedis.close();

}
(3)hash数据结构的操作
public void test3(){
// 1,获取连接
Jedis jedis = new Jedis(“localhost”,6379);
// 2,存储
jedis.hset(“user”,“name”,“lisa”);
jedis.hset(“user”,“age”,“23”);
jedis.hset(“user”,“gender”,“male”);
// 3,获取
String name = jedis.hget(“user”, “name”);
System.out.println(name);

// 获取hash所有的map中的数据
Map<String, String> user = jedis.hgetAll("user");
// 用keyset遍历user
Set<String> keyset = user.keySet();
for (String key : keyset) {
    // 获取value
    String value = user.get(key);
    System.out.println(key+":"+value);
}
// 4.关闭连接
jedis.close();

}
(4)list数据结构的操作
public void test4(){
// 1,获取连接
Jedis jedis = new Jedis(“localhost”,6379);
// 2,存储
jedis.lpush(“mylist”,“a”,“b”,“c”);//从左边存
jedis.rpush(“mylist”,“a”,“b”,“c”);//从右边存
// list范围获取
List mylist = jedis.lrange(“mylist”, 0, -1);
System.out.println(mylist);

// list弹出
String element1 = jedis.lpop("mylist");
System.out.println(element1);

String element2 = jedis.rpop("mylist");
System.out.println(element2);

List<String> mylist2 = jedis.lrange("mylist", 0, -1);
System.out.println(mylist2);

// 4.关闭连接
jedis.close();

}
(5)集合set:不允许重复元素
public void test5(){
// 1,获取连接
Jedis jedis = new Jedis(“localhost”,6379);
// 2,存储
Long sadd = jedis.sadd(“myset”, “java”, “php”, “c++”);

// set 获取
Set<String> myset = jedis.smembers("myset");
System.out.println(myset);

// 4.关闭连接
jedis.close();

}
(6)sortedset:排序集合
public void test6(){
// 1,获取连接
Jedis jedis = new Jedis(“localhost”,6379);
// 2,存储
Long zadd = jedis.zadd(“sortedset”, 80, “xiaoming”);
Long zadd1 = jedis.zadd(“sortedset”, 90, “xiaohong”);
Long zadd2 = jedis.zadd(“sortedset”, 75, “zhangsan”);

// set 获取
Set<String> mysortedset = jedis.zrange("sortedset", 0, -1);
System.out.println(mysortedset);

// 4.关闭连接
jedis.close();

}

8,jedis连接池:JedisPool
使用:
1,创建JedisPool连接池对象
2,调用方法getResource()获取连接
public void test7(){
// 0,创建一个配置对象
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(50);// 最大允许的连接数
jedisPoolConfig.setMaxIdle(90);// 最大空闲时间,超过时间则关闭连接
// 1,获取连接池对象
JedisPool jedisPool = new JedisPool(“localhost”,6379);
// 2,获取连接
Jedis resource = jedisPool.getResource();
// 3,使用
resource.set(“who”,“hello”);
// 4.关闭连接
resource.close();
}

9,jedis的一些详细配置
#最大活动对象数
redis.pool.maxTotal=1000
#最大能够保持idel状态的对象数
redis.pool.maxIdle=100
#最小能够保持idel状态的对象数
redis.pool.minIdle=50
#当池内没有返回对象时,最大等待时间
redis.pool.maxWaitMillis=10000
#当调用borrow Object方法时,是否进行有效性检查
redis.pool.testOnBorrow=true
#当调用return Object方法时,是否进行有效性检查
redis.pool.testOnReturn=true
#“空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为-1.
redis.pool.timeBetweenEvictionRunsMillis=30000
#向调用者输出“链接”对象时,是否检测它的空闲超时;
redis.pool.testWhileIdle=true

对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3.

redis.pool.numTestsPerEvictionRun=50
#redis服务器的IP
redis.ip=xxxxxx
#redis服务器的Port
redis1.port=6379

10,jedis的工具类
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**

  • JedisPool工具类
  • 加载配置文件。配置连接池的参数
  • 提供获取连接的方法
    */
    public class JedisPoolUtils {
    private static JedisPool jedisPool;
    static {
    // // 读取配置文件
    InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream(“jedis.properties”);
    // // 创建Properties对象
    // Properties prop = new Properties();
    // // 关联文件
    // try {
    // prop.load(JedisPoolUtils.class.getClassLoader().getResourceAsStream(“src\main\java\util\jedis.properties”));
    // } catch (IOException e) {
    // e.printStackTrace();
    // }
    // 获取数据,设置到JedisPoolConfig中
    JedisPoolConfig config = new JedisPoolConfig();
    config.setMaxTotal(50);
    config.setMaxIdle(10);
    // 初始化JedisPool
    jedisPool= new JedisPool(config,“localhost”,6379);
    }
    // 获取连接方法
    public static Jedis getJedis(){
    return jedisPool.getResource();
    }
    }

11,注意:使用redis缓存一些不经常发生的数据
数据库一旦发生改变,则需要更新缓存
数据库的表执行增删改操作。需要将redis缓存数据清空,再次存入
在service对应的增删改方法中,将redis数据删除

标签:入门,Redis,redis,value,获取,急速,jedis,key,Jedis
来源: https://blog.csdn.net/weixin_48167451/article/details/114935529

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有