Day30-Redis&Jedis

来源:互联网 发布:linux用户加组 编辑:程序博客网 时间:2024/06/06 03:51

NOSql解决三高:
高并发
大数据:海量数据查询一条数据
高可靠和高扩展

Jedis介绍
​ redis不仅可以通过命令行来操作,现在主流的语言(Java,C#…)基本都有客户端的支持.所以我们要通过java来操作Redis.
企业里用的最多的是Jedis.
Jedis:只是java操作Redis的客户端,相当于jdbc


Jedis使用步骤:

需要用到第三方jar包(两个)来操作:Jedis
步骤:
1)导入jar包
2)创建jedis对象

     new Jedis(“主机名,字符串类型”,端口号整型)     int port = 6379String host = “localhost”;     new Jedis(host,port);

3)操作redis数据库(set、get、del)

4)释放资源

    jedis.close();
      @Test      public void test01(){           Jedis jedis = new Jedis("192.168.139.128", 6379);           //jedis.set("akey", "aaa");           String string = jedis.get("akey");           System.out.println(string);           jedis.close();      }

Jedis工具类的抽取,用连接池

1)创建jedis连接词
1.1创建池子的配置对象

     new JedisPool(poolConfig , host , port);

2)获得jedis

     jedisPool.getResource();

3)操作redis(set、get、del)

JedisUtils:

public class JedisUtils {      //配置      private static JedisPoolConfig config;      //连接池      private static JedisPool pool;      static{           config = new JedisPoolConfig();           config.setMaxTotal(10);           config.setMaxIdle(5);           String host = "192.168.139.128";           int port = 6379;           pool = new JedisPool(config, host, port);      }      /**       * @Title: JedisUtils.java       * @Description: TODO(获得jedis对象)       * @return       * @author jjizh       * @date 2017年7月14日 下午8:57:04       * @version V1.0       */      public static Jedis getJedis(){           return pool.getResource();      }      /**       * @Title: JedisUtils.java       * @Description: TODO(关闭jedis对象,关闭资源)       * @param jedis       * @author jjizh       * @date 2017年7月14日 下午9:01:33       * @version V1.0       */      public static void close(Jedis jedis){           if(jedis != null){                 jedis.close();           }      }}

redis中的数据结构

redis中存储的数据是以key-value的形式存在的.其中value支持5种数据类型

* 字符串(String)* 哈希(hash)* 字符串列表(list)* 字符串集合(set)* 有序的字符串集合(sorted-set或者叫zset)

1)key不要太长(不能大于1024个字节)
也不要太短,描述性不好
一般的统一写法:项目名_子模块名_key名称


(一)存储字符串(重点)
String是redis最基本的类型,一个key对应一个value
String类型是二进制安全的,一个键最大能够存储512MB
常见命令:
这里写图片描述
这里写图片描述

扩展命令

* - getset key value:先获取再设置* - incrby key count:指定增加数量* - decrby key count:指定减少数量* - append key value:追加(若有指定的key 则追加,若无,则设置一个),相当于拼接字符串

存储哈希 hash(重点)
Redis中的hash是一个键值对集合
Redis hash 是一个String类型的field和value的映射表,hash特别适合用于存储对象
可以看成是String key和String value的map容器,也就是说把值看成map集合
把第一个key当成是redis中的key,把value里面的key当成是字段
这里写图片描述
常见命令:
这里写图片描述
这里写图片描述
扩展命令
hlen key 获取哈希表中字段的数量
hincrby key filed increment:给指定的子键增加指定的值
hkeys key:获取所有哈希表中的字段
hvals key:获得所有的value
HEXISTS key field:查看哈希表 key 中,指定的字段是否存在。


存储list
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边),一个列表最多可以包含 232 次方- 1 个元素 (4294967295, 每个列表超过40亿个元素)。

单项链表:查询满,增加和删除快
双向列表:查询慢,删除和增加快,特别是在两头

redis列表是简单的字符串列表,按照插入顺序排序,也是一种双向列表。
特点:有序
这里写图片描述


存储set
Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

特点:无序,唯一
集合成员是无序唯一的
这里写图片描述


存储sortedset (zset)

不重复、有序的。
Redis 有序集合(sortedset)和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。

​ redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
这里写图片描述


通用的操作

keys *: 查询所有的key
- exists key:判断是否有指定的key 若有返回1,否则返回0
- expire key 秒数:设置这个key在缓存中的存活时间
- ttl key:展示指定key的剩余时间
​ 若返回值为 -1:永不过期
​ 若返回值为 -2:已过期或者不存在
- del key:删除指定key
- rename key 新key:重命名
- type key:判断一个key的类型


Redis的特性:

1.多数据库性

​ redis默认是16个数据库, 编号是从0~15.

  • select index:切换库
  • move key index: 把key移动到几号库(index是库的编号)
  • flushdb:清空当前数据库
  • flushall:清空当前实例下所有的数据库

2.服务器命令(自学)

  • ping :测试连接是否存活
  • echo str: 打印内容
  • quit: 退出连接
  • dbsize:返回当前数据库key的数目
  • info:获取服务器信息

3.订阅发布

  • subscibe channel: 订阅频道
  • psubscribe *: 批量订阅频道
  • publish channel content:在指定的频道发布内容
原创粉丝点击