ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis概述以及基础语句

2021-12-15 18:02:51  阅读:138  来源: 互联网

标签:语句 127.0 键名 get 0.1 redis Redis 6379 概述


 非关系型数据库------Redis

解释:指的是这一类的数据库的存储方式不在是以表的形式来进行的,每一个数据库都是有自己的数据存储和表示方式====>非关系型数据库

一.NOSQL概述

1.NOSQL:不仅仅是SQL,泛指非关系型数据库,是对关系型数据库的一个有力补充,虽然非关系型数据库对于数据的存储组织形式不一样,但是保存数据的格式都是以键值对的形式来存在---->键名/值,例:

redis:  name   "tom"       age   19

mongodb:name:"张三"    age:18

2.名词解释:

key-value:键值对

RDBMS关系型数据库管理系统

DBS:数据库系统

3.redis概述

redis:远程字典服务,是开源,基于内存(数据是直接存储在内存中),跨平台(可以在多个操作系统中使用)的非关系型Key-value数据库。

4.redis数据库的特征:

4.1redis数据库是直接加载到内存中,而内存又可以直接和CPU做交互,所以redis数据库的读写出来速度占很大优势

4.2redis数据库支持的数据类型比较丰富,以及和数据类型相关的操作命令也是比较完善的

4.3对第一点的补充,数据的读写处理速度快

4.4redis数据库支持事务的操作(指的是在当前数据库中一次性做的并行处理的操作,比如:一次性执行多条数据库语句),所有的操作都具备原子性-->对数据的操作要么全部执行,要么全部取消(失败)

4.5redis数据库具备持久化功能:利用生成的持久化文件避免因为异常操作引发数据丢失,可以实现数据的备份与恢复

4.6redis数据库可以对键值对数据设置有效时间,一旦超过了有效时间,就会被系统给删除

4.7redis技术也能和大部分的开发语言做配合使用

5.redis和mysql的对比

5.1mysql属于关系型数据库,redis是属于非关系型数据库

5.2mysql是把数据存储在磁盘中,redis是把数据直接存储在内存中

5.3mysql数据库偏向于存数据,redis数据库偏向于读取数据

二.Redis数据库的配置

1.redis数据库服务启动

2.redis数据库的连接

3.redis数据库自带16个库,供操作者来使用,库的编号:【0-15】

默认连接到的是0号库,切换数据库:select  库编号

127.0.0.1:6379> select  5

OK

127.0.0.1:6379[5]> select  14

OK

===========================================================

Redis数据库的操作:

一.redis数据库的增删改查

1.删除当前数据库中的所有数据(键)    flushdb

127.0.0.1:6379> flushdb

OK

2.删除所有数据库中的数据(键)     flushall

127.0.0.1:6379> flushall

OK

3.创建或者增加键值对数据

set    键名   值

127.0.0.1:6379> set  name   "tom"

OK

127.0.0.1:6379> set  age  18

OK

4.获取数据

get    键名

127.0.0.1:6379> get  age

"18"

127.0.0.1:6379> get  name

"to

5.修改键的值(对键进行重新赋值)

set    键名    新的值

127.0.0.1:6379> set  age  20

OK

127.0.0.1:6379> get  age

"20"

6.删除键值对数据

del     键名

127.0.0.1:6379> del  age

(integer) 1

127.0.0.1:6379> get age

(nil)  ---->未知的结果

二.Redis数据库中Keys命令的操作     Key 键

1.exists    键名     查看一个键是否存在

127.0.0.1:6379> exists  name

(integer) 1

127.0.0.1:6379> exists  age

(integer) 0

2.type   键名    查看该键的数据类型

127.0.0.1:6379> type  name

string ---->字符串

127.0.0.1:6379> set  age  23

OK

127.0.0.1:6379> type  age

string

3.keys   字符模板   查看和该模板相关的键名

*    任意,所有的意思

127.0.0.1:6379> keys  *   ---->查看所有的键

1) "age"

2) "name"

127.0.0.1:6379> set name01  "zhangsan"

OK

127.0.0.1:6379> set  name02  "lisi"

OK

127.0.0.1:6379> set  sdept  "Testing"

OK

127.0.0.1:6379> keys  *

1) "name01"

2) "name02"

3) "sdept"

4) "name"

5) "age"

127.0.0.1:6379> keys  *e*

1) "name01"

2) "name02"

3) "sdept"

4) "name"

5) "age"

127.0.0.1:6379> keys  na*

1) "name01"

2) "name02"

3) "name"

4.randomkey   随机返回一个存在的键

127.0.0.1:6379> randomkey

"name"

127.0.0.1:6379> randomkey

"age"

127.0.0.1:6379> randomkey

"name02"

5.rename   旧键名   新键名   对键名进行重命名操作

需求:把name01---->newname

127.0.0.1:6379> rename  name01  newname

OK

127.0.0.1:6379> keys *

1) "name02"

2) "sdept"

3) "name"

4) "age"

5) "newname"

127.0.0.1:6379> get  newname

"zhangsan"

6.dbsize   统计当前数据库中键的总个数

127.0.0.1:6379> dbsize

(integer) 5

7.expire   键名    时间          设置键的活动时间(s)

8.ttl    键名    获取一个键的活动时间

127.0.0.1:6379> expire  newname  20

(integer) 1

127.0.0.1:6379> get  newname

"zhangsan"

127.0.0.1:6379> ttl  newname

(integer) 1

127.0.0.1:6379> ttl  newname

(integer) -2

127.0.0.1:6379> get newname

(nil)

9.move   键名   库编号       移动键到指定的数据库

127.0.0.1:6379> move  sdept   5

(integer) 1

127.0.0.1:6379> keys *

1) "name"

2) "age"

127.0.0.1:6379> select  5

OK

127.0.0.1:6379[5]> keys *

1) "sdept"

127.0.0.1:6379[5]> get sdept

"Testing"

127.0.0.1:6379[5]> flushall

OK

127.0.0.1:6379[5]> keys *

(empty list or set)

127.0.0.1:6379[5]> select 0

OK

127.0.0.1:6379> keys *

(empty list or set)

10.set   键名   值    ex  时间     在设定键值对的同时进行失效时间的设置

127.0.0.1:6379> set  cname  "test"   ex   30

OK

127.0.0.1:6379> get  cname

"test"

127.0.0.1:6379> ttl  cname

(integer) 17

127.0.0.1:6379> keys *

1) "cname"

127.0.0.1:6379> ttl cname

(integer) 2

127.0.0.1:6379> get  cname

(nil)

11.exit  退出客户端的连接

127.0.0.1:6379> exit

d:\redis>

12.info  显示redis数据库服务器信息

127.0.0.1:6379> info

# Server

redis_version:3.0.503

redis_git_sha1:00000000

redis_git_dirty:0

redis_build_id:d14575c6134f877

redis_mode:standalone

os:Windows

arch_bits:64

multiplexing_api:WinSock_IOCP

process_id:17464

run_id:fe86184836b516899883cf12d4f48164d46423c5

tcp_port:6379

uptime_in_seconds:3518

uptime_in_days:0

hz:10

lru_clock:12161214

config_file:d:\redis\redis.windows.conf

# Clients

connected_clients:1

client_longest_output_list:0

client_biggest_input_buf:0

blocked_clients:0

# Memory

used_memory:692104

used_memory_human:675.88K

used_memory_rss:654320

used_memory_peak:692672

used_memory_peak_human:676.44K

used_memory_lua:36864

mem_fragmentation_ratio:0.95

mem_allocator:jemalloc-3.6.0

三.Redis数据类型以及相关命令的操作

Ⅰ.字符串类型-->string   是redis数据库基本的,如果没有特殊指定数据类型(列表,set集合,哈希集合,有序集合),默认的数据都会把它看成是字符串类型。

redis中实现对字符串操作的命令:

set   键名   值   创建键值对

get   键名    获取键中的值

1.mset  键名1  值1   键名2   值2    键名3  值3....  

   批量向数据库中插入多个键值对的数据

127.0.0.1:6379> mset  sno 101  sname "zhangsan"  ssex "boy" sage  20

OK

127.0.0.1:6379> keys *

1) "sage"

2) "ssex"

3) "sname"

4) "sno"

127.0.0.1:6379> get  sname

"zhangsan"

127.0.0.1:6379> get sno

"101"

127.0.0.1:6379> type  sno

string

127.0.0.1:6379> type sname

string

2.mget  键名1  键名2  键名3...  获取多个键的值

127.0.0.1:6379> mget  sno  sname  sage

1) "101"

2) "zhangsan"

3) "20"

3.getset   键名     新值     先显示键中的值,再对键进行重新赋值操作

127.0.0.1:6379> getset  sage  23

"20"

127.0.0.1:6379> get  sage

"23"

4.setnx   键名   值      添加新的键值对,如果该键存在,则什么都不会做

127.0.0.1:6379> setnx  sdept  "testing"

(integer) 1

127.0.0.1:6379> keys *

1) "sage"

2) "sdept"

3) "ssex"

4) "sname"

5) "sno"

127.0.0.1:6379> setnx  sname   "lisi"

(integer) 0

127.0.0.1:6379> get sname

"zhangsan"

5.msetnx  键名1  值1   键名2  值2....   

   添加多个新的键值对,如果存在,什么都不做

127.0.0.1:6379> msetnx  sname  "wangwu"  grade  96

(integer) 0

127.0.0.1:6379> keys *

1) "sage"

2) "sdept"

3) "ssex"

4) "sname"

5) "sno"

127.0.0.1:6379> get sname

"zhangsan"

127.0.0.1:6379> msetnx  cno "c01"  grade  80

(integer) 1

127.0.0.1:6379> keys *

1) "grade"

2) "sage"

3) "sdept"

4) "ssex"

5) "cno"

6) "sname"

7) "sno"

127.0.0.1:6379> mget  cno  grade

1) "c01"

2) "80"

6.setex  键名   时间   新值    修改键的值,并设定有效时间

127.0.0.1:6379> setex  grade  35  60

OK

127.0.0.1:6379> get grade

"60"

127.0.0.1:6379> ttl  grade

(integer) 18

127.0.0.1:6379> ttl grade

(integer) 8

127.0.0.1:6379> get grade

(nil)

7.incr   键名   对键中的值(数字)进行加1的操作

127.0.0.1:6379> get sage

"23"

127.0.0.1:6379> incr  sage

(integer) 24

127.0.0.1:6379> get sage

"24"

127.0.0.1:6379> incr sage

(integer) 25

127.0.0.1:6379> get sage

"25"

8.incrby   键名     数值      将键中的值(数字)进行指定数值的增加

127.0.0.1:6379> incrby  sage  5

(integer) 30

127.0.0.1:6379> get sage

"30"

9.decr   键名    将键中的值进行减1的操作

10.decrby   键名   数值     将键中的值进行指定数值的减少

127.0.0.1:6379> decr  sage

(integer) 29

127.0.0.1:6379> get sage

"29"

127.0.0.1:6379> decrby  sage  10

(integer) 19

127.0.0.1:6379> get sage

"19"

11.append   键名   新值      将新的值拼接在原始键中的值后方

127.0.0.1:6379> keys *

1) "sage"

2) "sdept"

3) "ssex"

4) "cno"

5) "sname"

6) "sno"

127.0.0.1:6379> get sdept

"testing"

127.0.0.1:6379> append  sdept  2105

(integer) 11

127.0.0.1:6379> get sdept

"testing2105"

12.substr  键名   开始位置的下标    结束位置的下标     字符串截取操作

下标=位置-1

127.0.0.1:6379> get sdept

"testing2105"

127.0.0.1:6379> substr  sdept 4  7

"ing2"

13.setrange   键名   位置下标    新值   得到一个新的字符串(从指定位置开始,把新的值替换掉旧的值,替换的长度取决于新值的长度)

127.0.0.1:6379> get sdept

"testing2105"

127.0.0.1:6379> setrange  sdept  4  ers

(integer) 11

127.0.0.1:6379> get sdept

"testers2105"

127.0.0.1:6379> setrange  sdept 7  testing

(integer) 14

127.0.0.1:6379> get sdept

"testerstesting"

14.getrange  键名   开始位置的下标   结束位置的下标     截取查看操作

127.0.0.1:6379> get sdept

"testerstesting"

127.0.0.1:6379> getrange  sdept 7  11

"testi"

15.strlen   键名   统计键中存储的字符串长度

127.0.0.1:6379> strlen  sdept

(integer) 14

标签:语句,127.0,键名,get,0.1,redis,Redis,6379,概述
来源: https://blog.csdn.net/m0_59315964/article/details/121958124

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有