Redis概述以及基础语句

 非关系型数据库------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

上一篇:【Redis 系列】redis 学习二


下一篇:Redis学习(二):redis基础