redis——NoSQL的一种
为了解决高并发、高可用、高扩展、大数据存储等一系列问题而产生的数据库解决方案,就是NoSQL
- NoSQL,非关系型数据库,全名:Not Only Sql,它不能代替关系型数据库,只能作为关系型数据库的一个良好补充。
redis 简介
是使用c语言开发的一个高性能键值数据库,redis可以通过一些键值类型来存储数据。
redis 数据类型
- String:字符串类型
- map:散列类型
- list:列表类型
- set:集合类型
- sortedset:有序集合类型
redis的安装
方法一:
- 点击运行Redis-x64-3.2.100.msi,正常安装。
- 解压redis-5.0.3.tar.gz文件,将其中的内容都拷贝到安装目录下
方法二:
- 把redis-5.0.3.tar.gz解压到redis文件夹。
- 解压Redis-x64-3.2.100.zip文件,将其中内容都拷贝到上一步的redis文件夹中
- 将redis文件夹放到自己的安装目录
redis 启动
服务端启动
- 通过cmd终端命令,进入redis文件夹
- 执行命令:
- redis-server.exe redis.windows.conf
- 或redis-server.exe redis.conf
客户端启动
- 通过cmd终端命令,进入redis文件夹
- 执行命令:redis-cli.exe
- 带参数命令:redis-cli -h 主机名 -p 端口号(默认6379) -a 密码 -n 0(指定几号数据库,默认0号数据库)
redis 常用命令
服务端启动:redis-server.exe redis.windows.conf
客户端启动:redis-cli.exe
-
赋值命令
语法:
set key value
-
示例:
127.0.0.1:6379> set test 1234
OK
-
取值命令
语法:
get key
-
示例:
127.0.0.1:6379> set test 1234
OK
-
取值并赋值
语法:
getset key value
-
示例:
127.0.0.1:6379> getset test 222
"1234"
127.0.0.1:6379> get test
"222"
-
设置多个键值对
语法:
mset key1 value1 key2 value2 key3 value3
-
示例:
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
-
获取多个键值对
语法:
mget key1 key2 key3
-
示例:
127.0.0.1:6379> mget k1 k3
1) "v1"
2) "v3"
-
删除数据
语法:
del key
-
示例:
127.0.0.1:6379> del test
(integer) 1
-
数值增减
作用:当存储的字符串是整数时,redis提供了一个使用的命令incr,其作用是让当前的键值递增,并返回递增后的值
语法1_增加1:
incr key
-
示例1:
127.0.0.1:6379> set k4 2
OK
127.0.0.1:6379> incr k4
(integer) 3
127.0.0.1:6379> get k4
"3"
127.0.0.1:6379> 语法2_增加increment:
incrby key increment
-
示例2:
127.0.0.1:6379> incrby k4 3
(integer) 6 语法3_减少1:
decr key
语法4_减少increment:
decrby key increment
-
向尾部追加值
- 语法:
append key value
- 作用:向键值的尾部追加value,如果键值不存在,则将该键的值设置为当前value,相当于set key value。返回的是追加后字符串的长度。
- 语法:
-
获取字符串长度
- 语法:
strlen str
- 作用:返回键值的长度,如果键不存在则返回0
- 语法:
-
主键自增
- 商品编号、订单号采用string的递增数字特性生成
- 示例:
- 定义商品编号:
key:items:id
- 自增:
incr items:id
- 定义商品编号:
-
把java对象保存到redis中
- 假设有User对象以JSON序列化的形式存储到redis中,User对象有id,username,password,age,name等属性,存储过程为:User对象--->json(string)--->redis
- 如果在业务上只是更新age属性,其他属性不做更新,应该使用hash方式解决该问题。
-
hset命令:不区分插入和更新操作,执行插入操作时hset命令返回1,执行更新时返回0;
- 语法:
hset key field value
- 示例:
127.0.0.1:6379> hset user username zs
(integer) 1
127.0.0.1:6379> hset user username ls
(integer) 0- 一次设置多个字段值
- 语法:
hmset key field1 value1 field2 value2
- 语法:
-
hsetnx命令:当字段不存在时赋值,类似于hset,区别在于如果字段存在,不执行任何操作。
语法:
hsetnx key field value
如果user中没有age字段,则设置age值为value,否则不做任何操作
-
示例:
127.0.0.1:6379> hsetnx user sex 1
(integer) 1
127.0.0.1:6379> hsetnx user age 30
(integer) 0
127.0.0.1:6379> hget user age
"23"
-
获取一个字段的值
- 语法:
hget key field
- 语法:
-
获取一个字段的值
- 语法:
hmget key field1 field2
- 语法:
-
一次获取对象的所有字段
hgetall key
-
删除字段
- 可以删除一个或多个字段,返回值是被删除字段的个数
-
hdel key field1 field2 ..
.
-
判断字段是否存在
语法:
hexists key field
作用:若存在,返回"1",反之返回"0"
-
示例:
127.0.0.1:6379> hexists user age
(integer) 0
127.0.0.1:6379> hexists user username
(integer) 1
-
只获取字段名或字段值
字段名语法:
hkeys key
-
示例:
127.0.0.1:6379> hkeys user
1) "username" 字段值语法:
hvals key
-
示例:
127.0.0.1:6379> hget user username
"fdfs"
-
查看一个key中的字段数量
- 语法:
hlen key
- 语法:
-
hash方式存储的完整示例:存储商品信息
- 商品字段:【商品id,商品名称,商品描述,商品库存,商品评价】
- 定义商品信息key
- 语法:
hmset items:主键值 key1 value1 key2 value2
- 代码:
hmset items:1001 id 3 name apple price 999.99
- 语法:
- 获取部分商品信息
- 语法:
hget items:主键值 key1 key2
- 代码:
hget items:1001 id name
- 语法:
- 获取全部商品信息
- 语法:
hgetall items:主键值
- 代码:
hgetall items:1001
- 语法:
-
向链表两端增加元素
-
向列表左边增加元素(最后添加的元素在最上边)
- 语法:
LPUSH list:key v1 v2 v3
- 语法:
-
向列表右边增加元素(最后添加的元素在最下边)
- 语法:
RPUSH list:key v1 v2 v3
- 语法:
-
示例:
127.0.0.1:6379> lpush list:1 2 3 4 5
(integer) 4
127.0.0.1:6379> lpush list:2 2 3 4 5
(integer) 4
127.0.0.1:6379> rpush list:3 2 3 4 5
(integer) 4
-
-
查看列表:
语法:
lrange key start stop
作用:LRANGE命令是列表类型最常用的命令之一,获取列表中的某一片段,key为'list:链表名',返回start、stop之间的所有元素(报刊两端元素),索引从0开始,所以也可以是负数。例如:“-1”代表最后边的一个元素,"-2"代表倒数第二的元素
-
示例:
127.0.0.1:6379> lrange list:1 0 2
1) "5"
2) "4"
3) "3"
127.0.0.1:6379> lrange list:2 1 2
1) "4"
2) "3"
127.0.0.1:6379> lrange list:1 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
-
从列表两端弹出元素
-
从左侧弹出:
- 语法:
lpop key
- 作用:lpop命令是从左侧弹出一个元素,将列表左侧的元素移除并返回被移除的元素值。
- 语法:
-
从右侧弹出:
- 语法:
rpop key
- 作用:rpop命令是从右侧弹出一个元素,将列表右侧的元素移除并返回被移除的元素值。
- 语法:
-
示例:
127.0.0.1:6379> lpop list:1
"5"
127.0.0.1:6379> rpop list:1
"2"
127.0.0.1:6379>
-
-
获取列表中元素个数
语法:
llen key
-
示例:
127.0.0.1:6379> llen list:1
(integer) 2
-
删除列表中指定的值
-
语法:
-
LREM key count value
(注意:没有RREM命令)
-
-
作用:LREM命令会删除列表中前count个值为value的元素,返回实际删除元素个数。根据count值得不同,该命令执行的方式也会有所不同:
- 当count>0时,LREM会从列表左侧开始删除(根据count值进行元素删除)
- 当count=0时,LREM删除列表中所有符合条件的元素
- 当count<0时,LREM会从列表右边(后边)开始删除(根据count值进行元素删除)
-
示例:创建一个带重复元素的列表c,删除其中两个字母c,查看剩余的元素
127.0.0.1:6379> lpush list:c a b c d d b c b s d c
(integer) 11
127.0.0.1:6379> lrem list:c 2 c
(integer) 2
127.0.0.1:6379> lrange list:c 0 -1
1) "d"
2) "s"
3) "b"
4) "b"
5) "d"
6) "d"
7) "c"
8) "b"
9) "a"
-
-
查看列表下标对应的元素值
语法:
LINDEX key value
-
示例:
127.0.0.1:6379> lindex list:c 3
"b"
-
在集合set中添加、删除元素
添加语法:
sadd key member ..
删除语法:
srem key member ..
-
示例:
127.0.0.1:6379> sadd set:a a b c
(integer) 3
127.0.0.1:6379> sadd set:a a
(integer) 0
127.0.0.1:6379> srem set:a b
(integer) 1
-
查询集合中的所有元素
语法:
smembers key
-
示例:
127.0.0.1:6379> smembers set:a
1) "b"
2) "a"
3) "c"
-
判断集合中是否存在
sismember key member
若存在返回“1”,不存在返回“0”
-
示例:
127.0.0.1:6379> sismember set:a b
(integer) 1
-
集合的差集运算(A-B=属于A不属于B的集合)
语法:
sdiff key key ...
-
示例:
127.0.0.1:6379> sadd setA 1 2 3 4 5
(integer) 5
127.0.0.1:6379> sadd setB 3 4 5 6 7
(integer) 5
127.0.0.1:6379> sdiff setA setB
1) "1"
2) "2"
127.0.0.1:6379> sadd setC 4 5 6 7 8
(integer) 5
127.0.0.1:6379> sdiff setC setB set A
1) "8"
-
集合的交集运算(属于A且属于B的元素的集合)
语法:
sinter key key ...
-
示例:
127.0.0.1:6379> sinter setA setB
1) "3"
2) "4"
3) "5"
-
集合的并集运算(属于A或属于B的元素的集合)
语法:
sunion key key ...
-
示例:
127.0.0.1:6379> sunion setA setC
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
其他知识点
java中和redis中列表存储方式对比
- 在java中ArrayList和LinkedList的区别:
- ArrayList是使用数组来存储数据,特点是:查询块、增删慢
- LinkedList是使用双向链表存储数据,特点是:增删块,查询慢。如果查询的是链表两端的数据也比较块。
- 在redis中:
- list是采用链表存储的,所以对于redis的list数据类型的操作,是操作list的两端数据进行的。
集合类型set和列表类型list的区别:
- 集合类型set:无序、不可重复
- 列表类型list:有序、可重复
redis学习笔记01 — 基本介绍、安装配置及常用命令的更多相关文章
-
(Linux环境Kafka集群安装配置及常用命令
Linux环境Kafka集群安装配置及常用命令 Kafka 消息队列内部实现原理 Kafka架构 一.下载Kafka安装包 二.Kafka安装包的解压 三.设置环境变量 四.配置kafka文件 4.1 ...
-
vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍
这是我的vue.js 2.0的学习笔记,采取了将官方文档中的代码集中到一个文件的形式.目的是保存下来,方便自己查阅. !官方文档:https://cn.vuejs.org/v2/guide/ 01. ...
-
Redis学习笔记1-Redis的介绍和认识
说明:文章内容来自百度百科和redis官方对redis的介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API ...
-
MongoDB入门学习笔记之简介与安装配置
一.MongoDB简介 1.文档数据库 MongoDB是一款开源的文档型非关系数据库,具有高性能.高可靠性和自动扩展等特点.MongoDB中的每一条记录是一个文档,其数据存储结构为键/值对,类似JSO ...
-
Hive学习笔记(二)—— 安装配置
Hive安装配置及基本操作 1. Hive安装及配置 (1). 上传文件到Hadoop102节点,解压到/opt/moudle (2). 修改/opt/module/hive/conf目录下的hive ...
-
Java学习系列(一)Java的运行机制、JDK的安装配置及常用命令详解
俗话说:“十五的月亮十六圆”.那学习是不是也是如此呢?如果把月亮看成是我们的愿望,那十五便是我们所处的“高原期”,坚持迈过这个坎,我相信你的愿望终究会现实的.记得马云曾说:今天很残酷,明天更残酷,后天 ...
-
Docker学习--->;>;Docker的认识,安装,及常用命令熟悉
Docker是什么? 在平常的软件开发中,会面临着开发不同的程序或服务需要不同的环境.而在该环境上开发完成后,想要在其他的环境上部署,则需要自己去重新部署,而Docker的出现使得这样的迁移变得容易. ...
-
saltstack安装配置及常用命令
1.salt安装及配置详解 https://www.cnblogs.com/lgeng/p/6567424.html centos7配置: https://www.jianshu.com/p/4c91 ...
-
Mysql学习(慕课学习笔记1)启动、登录及常用命令
Mysql学习 启动数据库服务 net start mysql (不能加分号!!!!) 关闭数据库服务 net stop mysql 登录数据库 mysql -uroot -p -P3306 - ...
随机推荐
-
【Java心得总结六】Java容器中——Collection
在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...
-
戴尔3542安装ubuntu时出现:failed to lead ldlinux.c32
解决办法: 1. 开机未进入系统是连续敲击F2,进入BIOS2.在 BIOS 的Boot菜单下,将Secure Boot 改为 Disabled3. 将Boot List Option 改为 Lega ...
-
C#pdf 切割成图片
引用 using Ghostscript.NET;using Ghostscript.NET.Rasterizer; 需要安装 exe文件 public static GhostscriptVersi ...
-
sql语句的各种模糊查询
一般模糊语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1.%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况 ...
-
[Android Tips] 17. Check APK Sign Info
$ jarsigner -verify -verbose -certs <apk file path> 查看 keystore $ keytool -list -keystore debu ...
-
Qt_5_3_MSVC2012-编译QFtp-qt5编译QFtp
一.下载源码 git clone https://qt.gitorious.org/qt/qtftp.git 或者直接下载:云盘下载 二.构建 1.不对源码修改,直接构建qtftp 2.做如下修改,再 ...
-
nodejs中package.json文件模块依赖的版本格式
version 完全匹配 >version 大于这个版本 >=version大于或等于这个版本 <version 小于这个版本 <=version 小于等于这个版本 ~vers ...
-
sql CAST用法
(1).CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型.以下例子用于将文本字符串'12'转换为整型: ' AS int) (2).返回值是整型值12.如果试图将一个代表 ...
-
Html的基本元素(Element)
本人写这篇文章是我在IT修真园里学习了一段时间,反过来复习时整理的.虽然只是些基础知识内容,希望能帮到大家. 首先我们要了解所谓的html它的定义是什么? [html:超文本标记语言,文本:txt格式 ...
-
初探 ELK - 每天5分钟玩转 Docker 容器技术(89)
在开源的日志管理方案中,最出名的莫过于 ELK 了.ELK 是三个软件的合称:Elasticsearch.Logstash.Kibana. Elasticsearch一个近乎实时查询的全文搜索引擎.E ...