文档章节

redis入门

mouos
 mouos
发布于 05/22 11:26
字数 1880
阅读 2
收藏 0

docker安装Redis

string类型

赋值/取值

赋值
set test 123456
取值
get test

设置/获取多个键值

赋值
mset k1 v1 k2 v2 k3 v3 k4 v4 k5 v5
取值
mget k1 k2 k3 k4 k5

取值并赋值

获取 kk 的值,并赋值为 vv
getset kk vv 

删除

删除 k1 的值
del k1

数值的增减,当存储的字符串是整数时

使 kkk 的值增加 1
incr kkk

使 kkk 的值增加 5
incrby kkk 5

使 kkk 的值减少 1
decr kkk

使 kkk 的值减少 3
decrby kkk 3

hash 散列类型

使用string存储

set user {name:zhangsan,age:20,address:beijing}

使用hash存储,hset命令不区分插入和更新,当执行插入操作时hset命令返回1,当执行更新操作时返回0

为 user 模型下的 name 属性赋值为 zhangsan
hset user name zhangsan

为 user 模型下的 age 属性赋值为 30,name 属性赋值为 lisi 
hmset user age 30 name lisi

如果 userinfo 中没有 num 字段则设置为 30 ,否则不作任何操作

hsetnx userinfo num 30

hash取值

hget userinfo name
hmget userinfo name age address num

获取所有字段值
hgetall userinfo

删除

hdel userinfo num

删除多个
hdel userinfo num age name

增加数字

hincrby userinfo age 10

查看 userinfo 中是否存在 name 值 

hexists userinfo name

只获取字段名或字段值

只获取key
hkeys userinfo

只获取value
hvals userinfo

获取字段数量

hlen userinfo

应用

存储商品信息

商品字段 id name price color
商品100的信息在redis中的key为 items:100
hmset items:100 name iphone price 6000 color black id 100

获取商品信息

获取单个
hget items:100 name

获取多个
hmget items:100 name price

获取全部
hgetall items:100

list类型

存储

往左边放 顺序 3 2 1
lpush list 1 2 3

往右边放 顺序 7 8 9
rpush list 7 8 9

​​​​​查看

获取 0 到 3  的数据
lrange list 0 3

获取所有
lrange list 0 -1

从列表的两端弹出元素,弹出即删除

左边弹出一个元素
lpop list

右边弹出一个元素
rpop list

获取列表中元素的个数

llen list

删除列表中指定的值

lrem命令会删除表中前count个值为value的元素

  • 当count>0,lem会从列表左边开始删除
  • 当count<0,lem会从列表右边开始删除
  • 当count=0,lem会删除所有值为value的元素
从右边开始删除 2 个值为 10 的元素
lrem list -2 10

从左边开始删除 3 个值为 9 的元素
lrem list 3 9

删除全部值为 8  的元素
lrem list 0 8

获取/设置指定索引的元素值

获取 list 中索引为 8 的元素值
lindex list 8

设置 list 中索引为 5 的值为 7
lset list 5 7

只保留列表指定片段

只保留索引为 0 到 2 的元素
ltrim list 0 2

向列表中插入元素,从索引 0 开始查找插入,存在多个相同的元素时只插入一次

在元素为 7 的后面添加元素 9
linsert list after 7 9

在元素为 5 的前面添加元素 9
linsert list before 5 9

将元素从一个列表转移到另一个列表中

把 list 最后一个元素转移到 newlist 中
rpoplpush list newlist

应用

定义商品编号为 100 的商品评论 key 为:items:comment:100

lpush items:comment:100 '{"id":"1","name":"商品不错","date":"12947385837"}'

set类型

添加/移除

set 添加元素 a b c d e
sadd set a b c d e

set 移除元素 e
srem set e

获取集合中的所有元素

smembers set

判断元素是否在集合中

判断 set 中是否存在 a
sismember set a

运算命令

差集运算

属于 seta并且不属于setb的元素的集合
sdiff seta setb

交集运算

sinter seta setb

并集运算

sunion seta setb

获取集合的个数

scard set

从集合中弹出一个元素,随机选择一个元素弹出

spop seta

SortedSet 类型 zset

添加元素,向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数,返回值是新加入到集合中的元素个数,不包含之前已经存在的元素

zadd zset 90 zhangsan 80 lisi 50 wangwu

获取元素的分数

获取 zset 中元素 zhangsan 的分数
zscore zset zhangsan

删除

删除 lisi
zrem zset lisi

获得排名在某个范围的元素列表

获取 0 到 7 的元素,从小到大
zrange zset 0 7

获取 0 到 7 的元素,从大到小
zrevrange zset 0 7

获取 0 到 7 的元素,从大到小,带分数
zrevrange zset 0 7 withscores

获取指定分数范围的元素

获取 zset 中分数在 60 到 80 之间的元素及分数
zrangebyscore zset 60 80 withscores

获取 zset 中分数在 60 到 80 之间的元素及分数,第 1 页,每页显示 6 条数据
zrangebyscore zset 10 100 withscores limit 1 6

增加某个元素的分数

给 zhangsan 的分数增加 5
zincrby zset 5 zhangsan

获得集合中元素的个数

zcard zset

获得指定分数范围内的元素个数

zcount zset 50 90

按照排名范围删除元素

删除从 0 开始,1结束的元素
zremrangebyrank zset 0 1

删除全部元素
zremrangebyrank zset 0 -1

按照分数范围删除元素

删除分数在 60 到 80 之间的元素
zremrangebyscore zset 60 80

获取元素的排名

获取 zhangsan 分数的排名,从小到大
zrank zset zhangsan

获取 zhangsan 分数的排名,从大到小
zrevrank zset zhangsan

keys命令

设置test的生存时间为10秒
expire test 10

查看test的生成时间还剩多少秒删除,-1:未设置存活时间,-2:已删除
ttl test

查找 s 开头的的所有key
keys s*

查找全部key
keys *

判断 key 是否存在
exists test

删除一个key
del test

重命名
rename kk newkk

返回值的类型
type newkk

redis持久化方案

aof 和 rdb

使用jedis操作redis数据库

导入包

        //连接到redis数据库
        Jedis jedis = new Jedis("127.0.0.1", 6379);

        //选择要操作的数据库,默认操作第一个数据库,即0
        jedis.select(1);

        //存数据

        //string类型
        jedis.set("string类型", "存储的第一个数据");

        //hash类型
        jedis.hset("hash类型", "username", "gwl");
        jedis.hset("hash类型", "age", "18");
        jedis.hset("hash类型", "id", "1");

        //list类型
        jedis.lpush("list类型", "v1", "v2", "v3");

        //set类型
        jedis.sadd("set类型", "v1", "v2", "v3", "v4");

        //zset类型
        jedis.zadd("zset类型", 90, "zhangsan");
        jedis.zadd("zset类型", 50, "lisi");
        jedis.zadd("zset类型", 70, "lili");
        jedis.zadd("zset类型", 50, "gwl");

        //取数据
        jedis.get("string类型");
        jedis.hget("hash类型", "username");
        jedis.lrange("list类型", 0, 3);
        jedis.smembers("set类型");
        jedis.zscore("zset类型", "zhangsan");

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

连接池

        JedisPool jedisPool = new JedisPool("127.0.0.1", 6379);
        Jedis jedis = jedisPool.getResource();
        jedis.select(1);
        jedis.get("string类型");
        System.out.println(jedis.get("string类型"));

        jedis.close();
        jedisPool.close();

redis的主从复制

主redis配置,无需配置

从机redis配置

修改从机的redis.conf,配置 slaveof 为主机的ip地址和端号

slaveof 127.0.0.1 6379

修改redis.conf从机端口号不能和主机端口号相同

port 6380

集群

首先需要搭建ruby环境

创建集群

./redis-trib.rb create --replicas 1 127.0.0.1:70001 127.0.0.1:70002 127.0.0.1:70003 127.0.0.1:70004 127.0.0.1:70005
        Set<HostAndPort> nodes = new HashSet<>();
        nodes.add(new HostAndPort("127.0.0.1", 7001));
        nodes.add(new HostAndPort("127.0.0.1", 7002));
        nodes.add(new HostAndPort("127.0.0.1", 7003));
        nodes.add(new HostAndPort("127.0.0.1", 7004));
        nodes.add(new HostAndPort("127.0.0.1", 7005));
        nodes.add(new HostAndPort("127.0.0.1", 7006));

        JedisCluster cluster = new JedisCluster(nodes);
        cluster.set("cluster-test","我的集群");
        cluster.get("cluster-test");
        cluster.close();

 

© 著作权归作者所有

上一篇: swift柯里化
下一篇: docker安装Redis
mouos
粉丝 1
博文 245
码字总数 127890
作品 0
其它
私信 提问
Redis 学习路线

学习和使用 Redis 一般可以分为以下四个阶段: 初学者入门 进阶实战 理解原理 贡献和开发 本文接下来将在四个小节里面分别对这四个阶段进行介绍。 初学者入门 如果你只是对 Redis 感兴趣, ...

JackFace
2016/06/17
80
0
2019最新Java实战开发今日头条资讯网站

==================课程目录===================== 第1节 开发工具和Java语言介绍 主要介绍项目所需要的开发工具,并且会简单回顾这个项目所用到的语言-java,语法基础,控制流,数据结构,面...

weixin_44240109
01/06
0
0
(五)Redis快速入门-Redis数据类型List(列表)

(五)Redis快速入门-Redis数据类型List(列表) 我的系统版本为CentOS7.5,redis版本5.0.4 List(列表) Redis 列表是简单的字符串列表,按照插入顺序排序。 列表最多可存储 232 - 1 元素 ...

Super_RD
04/25
0
0
(十)Redis快速入门-centos7下配置redis开机自启动

(十)Redis快速入门-centos7下配置redis开机自启动 我的系统版本为CentOS7.5,redis版本5.0.4 redis连接客户端和服务程序在相同目录中,运行redis-cli即可打开客户端...

Super_RD
04/30
0
0
2019最全Java实战开发今日头条资讯网站

==================课程目录===================== 第1节 开发工具和Java语言介绍 主要介绍项目所需要的开发工具,并且会简单回顾这个项目所用到的语言-java,语法基础,控制流,数据结构,面...

@只想搞钱
01/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 请务必让我分担他们的痛苦!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy :分享石元丈晴的单曲《Why》: 《Why》- 石元丈晴 手机党少年们想听歌,请使劲儿戳(这里) @一代码哥 :当他妈狗屁的程序员,天天...

小小编辑
18分钟前
44
2
php 遇到 No input file specified的解决方法

(一)IIS Noinput file specified 方法一:改PHP.ini中的doc_root行,打开ini文件注释掉此行,然后重启IIS 方法二: 请修改php.ini 找到 ; cgi.force_redirect = 1 去掉前面分号,把后面的1...

chenhongjiang
今天
7
0
MySQL 基础

一、常用命令 在命令行中,配置好环境变量后,通过cmd可以直接进入mysql命令行模式,同时列举几种常用命令 # 进入mysql数据库,密码可以先不写,打完-p后再输入,防止被别人看到mysql -u账...

华山猛男
今天
6
0
简单的博客系统(四)Django请求HTML页面视图信息--基于函数的视图

1. 编写用于查询数据的功能函数 应用目录 下的 views.py 文件通常用于保存响应各种请求的函数或类 from django.shortcuts import renderfrom .models import BlogArticles# Create your ...

ZeroBit
今天
5
0
用脚本将本地照片库批量导入到Day One中

因为目前iCloud 空间已经不足,其中95%都是照片,之前入手了DayOne,且空间没有限制,订阅费一年也不少,再加上DayOne作为一款日记App 也比较有名,功能方面最大的就是地理视图与照片视图,尤...

在山的那边
昨天
23
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部