redis学习

2020年10月21日
MySQL默认为3306端口,tomcat默认为8080端口,redis默认为6379端口
cmd命令行启动服务器:redis-server.exe
cmd命令行访问服务器:redis-cli.exe -h 127.0.0.1 -p 6379
置键值对:set key value
取出键值对:get key value
CONFIG 命令查看或设置配置项:CONFIG GET CONFIG_SETTING_NAME
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)
1.字符串的设置就是前面演示的,非常简单

2.hash数据类型,示例:
HMSET runoob field1 “Hello” field2 “World”:“OK”
HGET runoob field1:“Hello”
HGET runoob field2:“World”
说明:Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。,HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value,每个 hash 可以存储 232 -1 键值对(40多亿)

3.list数据类型,示例:
lpush runoob redis
(integer) 1
lpush runoob mongodb
(integer) 2
lpush runoob rabitmq
(integer) 3
lrange runoob 0 10

  1. “rabitmq”
  2. “mongodb”
  3. “redis”
    说明:Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
    基本操作:lpush、rpush、lrange、lpop、rpop

4.set数据类型,示例:
DEL runoob
sadd runoob redis
(integer) 1
sadd runoob mongodb
(integer) 1
sadd runoob rabitmq
(integer) 1
sadd runoob rabitmq
(integer) 0
smembers runoob

  1. “redis”
  2. “rabitmq”
  3. “mongodb”
    说明:Redis 的 Set 是 string 类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1),集合中的元素是唯一的
    基本操作:sadd、smembers、srem

5.zset数据类型(sortedset,有序集合),示例:
zadd runoob 0 redis
(integer) 1
zadd runoob 0 mongodb
(integer) 1
zadd runoob 0 rabitmq
(integer) 1
zadd runoob 0 rabitmq
(integer) 0
ZRANGEBYSCORE runoob 0 1000

  1. “mongodb”
  2. “rabitmq”
  3. “redis”
    说明:Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
    基本操作:zadd、zrange、zrem

2020年10月22日
常用命令:
keys *:查看所有的键
type key:查看某个键的数据类型
del key:删除指定的key value

持久化:
redis是一个内存数据库,当redis服务器关闭时,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中
redis的持久化机制:
(1)RDB:默认方式,不需要进行配置
在一定的间隔时间中,检测key的变化情况,然后持久化数据。对性能的影响很小
在redis.windows.conf配置文件中,一定的时间间隔中,检测到一定数量的keys发生改变,就进行数据持久化,生成的是
命令示例:redis-server.exe redis.windows.conf
生成的是rdb格式的文件

(2)AOF:日志记录的方式
可以记录每一条命令的操作,可以每一次命令操作后,持久化数据,对性能的影响比较大
生成的是aof格式的文件

编辑redis.windwos.conf文件
appendonly no(关闭aof) --> appendonly yes(开后aof)每隔一秒进行一次持久化
appendfisync always :每一次操作都进行持久化
appendfsync everysec :每隔一秒进行持久化
appendfsync no :不进行持久化

Java客户端:Jedis,一款Java操作redis数据库的工具

String数据类型代码示例:
Jedis jedis = new Jedis(“localhost”);
//String数据类型
jedis.set(“username”, “hejundong”);
System.out.println(jedis.get(“username”));
jedis.setex(“activecode”, 20, “hehe”);
jedis.close();
如上如示,在jedis的new过程中,使用空参构造,默认值为localhost,6379端口
jedis.setex(“activecode”, 20, “hehe”)//比较有趣的方法,自动删除

hash数据类型代码示例:
Jedis jedis = new Jedis(“localhost”);
//String数据类型
jedis.hset(“user”, “name”,“hejundong”);
jedis.hset(“user”, “age”,“23”);
jedis.hset(“user”, “gender”,“male”);
System.out.println(jedis.hget(“user”,“age”));
Map<String, String> user = jedis.hgetAll(“user”);
Set keySet = user.keySet();
for(String key : keySet){
String value = user.get(key);
System.out.println(key + “:” + value);
}
jedis.close();

list数据类型代码示例:
Jedis jedis = new Jedis(“localhost”);
jedis.lpush(“mylist”, “a”, “b”, “c”);
jedis.rpush(“mylist”, “a”, “b”, “c”);
System.out.println(jedis.lrange(“mylist”,0, 100));
System.out.println(jedis.lpop(“mylist”));
jedis.close();

set数据类型代码示例:
Jedis jedis = new Jedis(“localhost”);
//String数据类型
jedis.sadd(“myset”, “java”,“php”,“c++”);
Set set = jedis.smembers(“myset”);
System.out.println(set);
jedis.close();

sortedset数据类型代码示例:
Jedis jedis = new Jedis(“localhost”);
jedis.zadd(“student”, 100, “hejundong”);
jedis.zadd(“student”, 90, “zhangsan”);
jedis.zadd(“student”, 80, “lisi”);
System.out.println(jedis.zrange(“student”, 0 , 100));
jedis.close();

Jedis连接池,JedisPool代码示例:
JedisPool jedisPool = new JedisPool();
Jedis jedis = jedisPool.getResource();
jedis.set(“hehe”,“haha”);
jedis.close();
对于JedisPool的构造函数,还有各种重载,无非就是对于参数进行各种设置

jedis的连接池工具类
public class JedisPoolUtils {
private static JedisPool jedisPool;

static{
    //读取配置文件
    InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("src/main/jedis.properties");
    //创建Properties对象
    Properties pro = new Properties();
    //关联文件
    try{
        pro.load(is);
    } catch (IOException e) {
        e.printStackTrace();
    }
    //获取数据,设置到JedisPoolConfig中
    JedisPoolConfig config = new JedisPoolConfig();
    config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
    config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
    //初始化JedisPool
    jedisPool = new JedisPool(config, pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));
}

public static Jedis getJedis(){
    return jedisPool.getResource();
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值