栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java学习---Redis基础操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java学习---Redis基础操作

Redis基础操作

1、Redis的数据结构2、常用指令

 2.1、String 基本操作 2.2、字符串数字自增自减 2.3、Hash 散列 2.4、List 列表 2.5、Set 集合 2.6、Zset 集合 3、HyoperLogLog

 3.1、优点 3.2、相关命令 4、其他命令5、数据库切换

1、Redis的数据结构

 Redis 是一种基于内存管理的数据库,并且提供一定的持久化功能,它是一种键值(key - -value)类型的非关系型数据库,和 hash 的索引方式一样,使用键作为作为索引就可以找到当前进行缓存的数据,并且将数据返回给程序的调用者。

 当前的 Redis 支持 6种 数据类型,分别是字符串(String),列表(List),集合(Set),哈希结构(Hash),有序集合(Zset)和基数计算(HyperLogLog)。

数据类型存储的值信息说明
String可以是字符串、整数和浮点数可以对字符串进行操作,比如增加字符或者是求子串;如果是整数或者是浮点数,可以实现计算例如自增功能等。
List表示为一个链表,每一个节点都包含一个字符串支持双端、偏移裁剪操作,可以一次读取一个或者多个节点,按照条件查找删除。
Set无序集合,每个元素都是一个字符串而且唯一支持集合之间的操作,最多还是用于去重。
Hash相当于 Map 结构支持增、删、改、查操作。
Zset有序集合,根据指定的分值来进行排序支持增、删、改、查操作,可以按照分值进行范围查询。
HyperLogLog作用是计算重复的值,以确定存储的数量只提供基数的运算并且没有响应。
2、常用指令

 对于指令的介绍在 http://doc.redisfans.com/index.html 中有着明确的定义,这里对简单常用的指令进行简单的回顾使用。

 2.1、String 基本操作

简单赋值:set key value

127.0.0.1:6379> set name beordie
ok

简单取值:get key

127.0.0.1:6379> get nameshell
"beordie"

一次设置多个键值:mset key value [key value…]

127.0.0.1:6379> mset name lisi age 13
OK

获取多个键值:get key [key…]

127.0.0.1:6379> mget name age
1) "lisi"
2) "13"

删除键值:del key

127.0.0.1:6379> del name
(integer) 1
 2.2、字符串数字自增自减

  当存储的字符串是整数时,Redis 提供了一个实用的命令 INCR | DECR,其作用是让当前键值递增递减,并返回计算后的值,偏移的值可以进行指定。

递增数字:incr key

127.0.0.1:6379> incr age
(integer) 14

递增指定偏移量:incrby key increment

127.0.0.1:6379> incrby age 2
(integer) 16

递减数字:decr key

127.0.0.1:6379> decr age
(integer) 15

递减指定偏移量: decrby key increment

127.0.0.1:6379> decrby age 2
(integer) 13
 2.3、Hash 散列

 提供字段和字段值的映射,字段值 只支持 字符串类型,不支持其他数据类,相当于对象格式的存储(key 表示对象、filed 表示字段、value 表示属性值)。

简单赋值:hset key filed value

127.0.0.1:6379> hset user name lisi
(integer) 1
127.0.0.1:6379> hset user name zhangsan
(integer) 0

 hset 命令不区分插入和更新操作,靠返回值来判别,插入返回 1 ,更新返回 2 。

简单取值:hget key filed

127.0.0.1:6379> hget user name
"zhangsan"

多个字段赋值:hmset key filed value [filed value…]

127.0.0.1:6379> hmset user1 name lisi age 14
OK

多个字段取值:hmget key filed [filed…]

127.0.0.1:6379> hmget user1 name age
1) "lisi"
2) "14"

获取所有的字段和值:hgetall key

127.0.0.1:6379> hgetall user
1) "name"
2) "zhangsan"

删除字段:hdel key field [field…]

127.0.0.1:6379> hdel user name
(integer) 1
 2.4、List 列表

 Redis 的列表是采用双向链表来实现的,具有较高的更改能力,但是查询速度较慢,元素的插入是有序的。

左边增加元素:lpush key value [value…]

127.0.0.1:6379> lpush label a1 a2
(integer) 2

左边删除元素:lpop key

127.0.0.1:6379> lpop label
"a1"

右边增加元素:rpush key value [value…]

127.0.0.1:6379> rpush label a3
(integer) 1

右边删除元素:rpop key

127.0.0.1:6379> rpop label
"a3"

获取列表中元素的个数:llen key

127.0.0.1:6379> llen label
(integer) 1

查看区间元素:lrange key start stop

127.0.0.1:6379> lrange label 0 1
1) "a2"

 区间范围是闭区间,索引从零开始计算,也可以是负数,表示从尾部开始,-1 就代表最后一个元素

 2.5、Set 集合

增加元素:sadd key member [member…]

127.0.0.1:6379[2]> sadd user zhangsan
(integer) 1
127.0.0.1:6379[2]> sadd user lisi
(integer) 1
127.0.0.1:6379[2]> sadd user lisi
(integer) 0

删除元素:srem key member [member…]

127.0.0.1:6379[2]> srem user lisi
(integer) 1

查看所有元素:smembers key

127.0.0.1:6379[2]> smembers user
1) "zhangsan"
2) "lisi"

查看是否包含键:sismember key member

127.0.0.1:6379[2]> sismember user lisi
(integer) 0
127.0.0.1:6379[2]> sismember user zhangsan
(integer) 1
 2.6、Zset 集合

 SortedSet 又叫 Zset ,是有序集合,元素可进行排序但是唯一,和一般集合的区别就在于为每个元素增加了一个分数属性,可以通过这个分数来进行排序。

增加元素:zadd key score member [score member…]

 如果已经存在了一个同名元素那就会替换掉当前的分数值,保持原元素的数据。

127.0.0.1:6379[2]> zadd object 10 english 12 math
(integer) 2

按照排序区间进行数据的返回:zrevrange key start stop [whitscores]

 后面的指定参数表示是否将元素对应的分数一起返回

127.0.0.1:6379[2]> zrevrange object 0 3
1) "math"
2) "english"

获取元素的分数:zscore key member

127.0.0.1:6379[2]> zscore object math
"12"

删除元素:zrem key member [member…]

127.0.0.1:6379[2]> zrem object math
(integer) 1
3、HyoperLogLog

  HyoperLogLog 是一种使用随机化的算法,以少量内存提供集合中唯一元素数量的近似值,简单的说就是输入一个数据集合,返回集合中唯一数据的近似数量。

概念:

基数:集合中不同元素的个数,例如{‘apple’,‘orange’,‘apple’}的基数为2

估算值:算法给出的数据不是精确的,波动的幅度可控。

 3.1、优点

  HyoperLogLog 优点是既是输入元素的集合数量或者是体积非常的大,计算基数所需要的空间总是固定的,并且消耗量较小。

 在 Redis 里面,每个 HyoperLogLog 键只需要花费 12KB 的内存就可以计算接近 2^64 个元素集合的基数,和其他的存储数据的基数计算方法有着鲜明的内存消耗对比。

 由于 HyoperLogLog 低内存计算的特点,因此不会对元素进行存储,不能像集合类型那样进行元素的返回,只会根据输入元素来计算基数。

 3.2、相关命令

添加元素:pfadd key element [element…]

127.0.0.1:6379> pfadd fruit apple orange apple
(integer) 1

计算基数:pfcount key [key…]

127.0.0.1:6379> pfcount fruit
(integer) 2

合并集合:pfmerge destkey sourcekey [sourcekey]

127.0.0.1:6379> pfmerge food fruit
OK
4、其他命令

指定条件查询获取键:keys pattern

# *号表示匹配所有的条件
127.0.0.1:6379> keys *
1) "food"
2) "fruit"

查看是否包含一个键:exists key

127.0.0.1:6379> exists food
(integer) 1

删除键:del key

127.0.0.1:6379> del fruit
(integer) 1

重命名键:rename oldkey newkey

127.0.0.1:6379> rename food fruit
OK

返回值的类型:type key

127.0.0.1:6379> type fruit
string

设置生存周期:expire key seconds

127.0.0.1:6379> expire fruit 120
(integer) 1

查看生存时间剩余:ttl key

127.0.0.1:6379> ttl fruit
(integer) 82

清除时间:persist key

127.0.0.1:6379> persist fruit
(integer) 1

获取配置节点信息:info删除当前数据库的所有键:flushdb删除所有数据库的所有键:flushall 5、数据库切换

 一个 Redis 实例包含多个数据库,键值在多个数据库之间是不可见的,在客户端可以选定使用哪一个数据库。和常用的 MySQL 数据库的切换不一样,Redis 的数据库数量是在配置文件中进行预先定义的,默认是 16 个数据库,最多也只提供 16 个,下标从 0 开始计数。

数据库切换:select index

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/710765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号