Redis入门



Redis介绍

Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

Linux>Redis安装

 # 进入/usr/local/目录 创建 redis目录
 $ cd /usr/local/
 $ mkdir redis
 $ cd redis/
 # 下载Redis压缩包 https://redis.io/download/#redis-downloads
 $ wget https://download.redis.io/releases/redis-5.0.14.tar.gz
 # 解压Redis & 进入Redis目录
 $ tar zxf redis-5.0.14.tar.gz
 $ cd redis-5.0.14
 # 编译Redis
 $ make

Windows>Redis安装

 下载安装包并解压,运行redis-server redis.windows.conf

Redis守护进程

配置项示例说明
daemonizedaemonize yes是否启用后台运行默认no
portport 6379设置端口号默认6379
logfilelogfile日志文件设置日志文件
databasesdatabases 255设置redis数据库总量
dirdir数据文件目录设置数据文件存储目录
requirepassrequirepass 12345设置使用密码
 # 进入Redis配置文件
 $ vim redis.fonf
 # 跳转130行 修改daemonize no 为daemonize yes
 $ daemonize yes
 # 运行Redis
 $ ./src/redis-server redis.conf
 # 结束Redis
 $ netstat -tulpn
 $ kill -9 "RedisPID" # 或./src/redis-cli shutdown

Redis通用命令

命令示例说明
selectselect 0选择0号数据库
setset name lily设置key=name,value=lily
getget hello获得key=hello结果
keyskeys he*根据Pattern表达式查询符合条件的Key
dbsizedbsize返回key的总数
existsexists a检查key=a是否存在
deldel a删除key=a的数据
expireexpire hello 20设置key= hello 20秒后过期
ttlttl hello查看key = a的过期剩余时间

Redis数据类型

类型说明
String字符串类型
HashHash类型
List列表类型
Set集合类型
Zset有序集合类型

字符串常用命令

命令示例说明
getget hello获取key=hello的结果
setset hello world值key=hello,value=world
mset mgetmset helo world java bast mget helo java一次性设置或获取多个值
deldel hello删除key=hello
incr/decrincr count decr countkey值自增/自减1
incrby/decrbyincrby count 99 decrby count 99自增自减指定步长

Hash键值类型

  • 用于存储结构化数据
image-20220729202558419
命令示例说明
hgethget emp:1 age设置hash中age=23值
hsethset emp:1 age 23设置hash中age=23
hmset hmset hgetallhmset emp:1 age 30 name kaka hmget emp:1 age name hgetall emp:1hgetall emp:1 获取hash多个值 获取hash所有值
hdelhdel emp:1 age删除emp:1的age
hexistshexists emp:1 name检查是否存在
hlenhlen emp:1获取指定长度

List列表类型

  • 一系列字符串的“数组”,按插入顺序排序

List命令

rpush listkey c b a 右侧插入

lpush listket f e d 左侧插入

image-20220729210602785

rpop listkey 右侧弹出

lpop listkey 左侧弹出

image-20220729210756993

lrange listkey 0(开始) -1(末尾) 查看list里的数据

Set与Zset集合类型

Set集合是字符串的无序集合,集合成员是唯一的

 $ sadd key value # 添加集合
 $ smembers key # 查看集合所有成员
 $ sinter key1 key2 # 把两个集合中的相同元素列出来
 $ sunion key1 key2 # 吧两个集合中的元素合并在一起并且去重
 $ sdiff key1 key2 # 在key1中有,key2没有的元素列出

Zset集合是字符串的有序集合,集合成员是唯一的

 $ zadd key 100 value # 添加有序元素
 $ zrange key start stop # 查看元素
 $ zrangebyscore key min max # 查看范围内的元素(列:100-103以内的元素)

String

Java中使用Redis

  • Jedis是Java语言开发的Redis客户端工具包
  • Jedis是对Redis命令的封装,掌握Redis命令便可轻易上手
 $ bind 0.0.0.0 #生产模式下不建议使用0.0.0.0作为连接ip
 $ protected-mode no #关闭保护模式

String

 public class JedisTestor {
     public static void main(String[] args) {
         Jedis jedis = new Jedis("106.12.145.20", 6379);
         try {
             jedis.select(5);
             System.out.println("Redis连接成功");
             //设置字符串
             jedis.set("ceshi", "ceshi1");
             String ceshi = jedis.get("ceshi");
             System.out.println(ceshi);
             //设置多个值
             jedis.mset(new String[]{"age", "18", "sex", "男"});
             //获取多个值
             List<String> mget = jedis.mget("ceshi", "age", "sex");
             System.out.println(mget);
             //age 自增1
             Long age = jedis.incr("age");
             System.out.println(age);
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
             jedis.close();
         }
     }
 }

Hash

 public class JedisTestorOne {
     public static void main(String[] args) {
         Jedis jedis = new Jedis("106.12.145.20", 6379);
         //Hash
         try {
             jedis.select(1);
             //设置Hash
             jedis.hset("stu:1", "name", "小明");
             //获取指定Hash
             String name = jedis.hget("stu:1", "name");
             System.out.println(name);
 ​
             Map<String,String> map = new HashMap();
             map.put("name","小红");
             map.put("age","18");
             map.put("sex","女");
 ​
             jedis.hmset("stu:2", map);
             Map<String, String> stringStringMap = jedis.hgetAll("stu:2");
             System.out.println(stringStringMap);
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
             jedis.close();
         }
     }
 }

List

public class JedisTestorTwo {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("106.12.145.20", 6379);
        //List
        try {
            jedis.select(6);
            jedis.del("letter");
            //(右侧)尾部添加字符
            jedis.rpush("letter", new String[]{"A", "B", "C"});
            //(左侧)头部部添加字符
            jedis.lpush("letter", new String[]{"D", "E", "F"});
            //lrange letter 0(开始) -1(末尾)
            List<String> letter = jedis.lrange("letter", 0, -1);
            //左侧最后元素弹出
            jedis.lpop("letter");
            //右侧最后元素弹出
            jedis.rpop("letter");
            //重新赋值
            letter = jedis.lrange("letter", 0, -1);
            System.out.println(letter);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            jedis.close();
        }
    }
}

Jedis缓存数据

 //通过初始化存储数据
 public CacheSample() {
     Jedis jedis = new Jedis("106.12.145.20",6379);
     try {
         List<Goods> goodsList = new ArrayList<Goods>();
         goodsList.add(new Goods(110, "香蕉", "大香蕉", 25f));
         goodsList.add(new Goods(111, "红富士苹果", "苹果", 3.5f));
         goodsList.add(new Goods(112, "蒙牛纯牛奶", "牛奶", 7f));
         jedis.select(10);
         for (Goods goods : goodsList) {
             String json = JSON.toJSONString(goods);
             System.out.println(json);
             String key = "goods:" + goods.getGoodsId();
             jedis.set(key, json);
         }
     } catch (Exception e) {
         e.printStackTrace();
     } finally {
         jedis.close();
     }
 }
<!-- wp:preformatted -->
<pre class="wp-block-preformatted"> }</pre>
<!-- /wp:preformatted -->

<!-- wp:preformatted -->
<pre class="wp-block-preformatted"> public static void main(String[] args) {
     new CacheSample();
     Jedis jedis = new Jedis("106.12.145.20");
     try {
         jedis.select(10);
         String goodsId = new Scanner(System.in).next();
         String key = "goods:" + goodsId;
         if (jedis.exists(key)) {
             String json = jedis.get(key);
             System.out.println(json);
             //调用parseObject方法传入JSON字符串和类
             Goods goods = JSON.parseObject(json, Goods.class);
             System.out.println(goods.getGoodsName());
             System.out.println(goods.getGoodsId());
         } else {
             System.out.println("您查找的数据不存在!");
         }
     } catch (Exception e) {
         e.printStackTrace();
     } finally {
         jedis.close();
     }
 }
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片