Nosql 数据类型及其他操作

MySQL关系数据库管理系统      按照预先设置的组织结构,将数据存储在物理介质上

- 主流的RDBMS软件
  - MySQL
  - MariaDB
  - Oracle
  - DB2
  - SQL Server-----微软Windows
  - PostgreSQL----红帽

nosql 非关系型数据库     不需要预先设置的组织结构,

主流软件

- Redis    
- Memcached
- MongoDB
- CouchDB
- Neo4j
- FlockDB

哈希表     键值对  查询快 (恒定)

  程序执行两种方式

​      1.解释执行:源码可以直接执行,需要解释器

​      2.编译执行:源码不能直接执行,需要编译成二进制可执行文件(go, gcc 编译器)

## 部署Redis服务

1、安装GCC

[root@nginx ~]#  yum install -y gcc

2、解压Redis,编译安装

将源码包传到虚拟机家目录下

[root@nginx ~]# tar -xf redis-4.0.8.tar.gz
[root@nginx ~]# cd redis-4.0.8
[root@nginx redis-4.0.8]# ls
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-sentinel  tests
BUGS             deps     MANIFESTO  runtest          sentinel.conf     utils
CONTRIBUTING     INSTALL  README.md  runtest-cluster  src
[root@nginx redis-4.0.8]# vim +27 src/Makefile

```
PREFIX?=/usr/local/redis
```

[root@nginx redis-4.0.8]# make & make install

将Redis命令目录添加到path环境变量

[root@nginx redis-4.0.8]# vim /etc/bashr

​       cexport PATH=$PATH:/usr/local/redis/bin  # 最后一行添加

[root@nginx redis-4.0.8]# source /etc/bashrc   # 让文件生效

3、初始化服务

 默认端口号   6379

配置文件默认   /etc/redis_6379

错误日志默认

数据目录默认

运行Redis服务时服务启动默认

[root@nginx redis-4.0.8]# ./utils/install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/redis/bin/redis-server]
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/redis/bin/redis-server
Cli Executable : /usr/local/redis/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

4、查看服务状态

**<u>七版本之前服务控制命令 server**</u> 

[root@nginx redis-4.0.8]# /etc/init.d/redis_6379 status
Redis is running (5134)
[root@nginx redis-4.0.8]# **<u>service</u>** redis_6379 status
Redis is running (5134)
[root@nginx redis-4.0.8]# ss -tlnp | grep :6379
LISTEN     0      128    127.0.0.1:6379                     *:*                   users:(("redis-server",pid=5134,fd=6))

**cli:     command line interface  命令行接口**

**tui:    text user interface        文本用户接口**

**gui:   graphical  user  interface  图形用户接口**

测试连接服务

[root@nginx redis-4.0.8]# redis-cli
127.0.0.1:6379> PING
PONG                     #连接成功

**Redis数据类型**

##### 1 、字符串 - 最基本数据类型 存储任何形式的字符串,包括二进制数据

赋值 SET   key  vlaue

 nil   #表示空

INCR  # 增加后的值 一次加1  INCRBY 增加多个值

`127.0.0.1:6379> INCR num`
`(integer) 1`
`127.0.0.1:6379> get num`
`"1"`

`127.0.0.1:6379> INCR num`
`(integer) 2`
`127.0.0.1:6379> INCR num`
`(integer) 3`

127.0.0.1:6379> INCRBY num 3
(integer) 6

DECR # 减少后的值  DECRBY 减少多个值

127.0.0.1:6379> DECR num
(integer) 5
127.0.0.1:6379> DECRBY num 3
(integer) 2

向尾部追加值 APPEND

127.0.0.1:6379> set hi HELLO
OK
127.0.0.1:6379> APPEND hi 'World'
(integer) 10
127.0.0.1:6379> get hi
"HELLOWorld"

<u>字节长度 STRLEN</u>

127.0.0.1:6379> STRLEN hi        
(integer) 16

同时设置多个值     MSET

127.0.0.1:6379> MSET username tom password tedu.cn
OK
127.0.0.1:6379> MGET username password
1) "tom"
2) "tedu.cn"

判断值是否存在  EXISTS

127.0.0.1:6379>   EXISTSnum
(integer) 1
127.0.0.1:6379> EXISTS number
(integer) 0

存在不赋值。不存在赋值****SETNX

127.0.0.1:6379> SETNX number 100
(integer) 1
127.0.0.1:6379> GET number
"100"
127.0.0.1:6379> SETNX number 200
(integer) 0
127.0.0.1:6379> GET number
"100"

查看所有key

127.0.0.1:6379> KEYS *
1) "num"
2) "password"
3) "hi"
4) "number"
5) "username"

删除key

127.0.0.1:6379> DEL number
(integer) 1

查看key类型  type

127.0.0.1:6379> TYPE username
string

 2、 散列类型

设置单个字段

127.0.0.1:6379> HSET user1 name tom
(integer) 1
127.0.0.1:6379> HSET user1 gender male
(integer) 1
127.0.0.1:6379> HGET user1 name
"tom"
127.0.0.1:6379> Hget user1 gender
"male"

设置多个值

127.0.0.1:6379> HMSET user1 email bob@tedu.cn phone 12212132345
OK
127.0.0.1:6379> HGETALL user1
1) "name"
2) "tom"
3) "gender"
4) "male"
5) "email"
6) "bob@tedu.cn"
7) "phone"
8) "12212132345"

判断字段是否存在

127.0.0.1:6379>  HEXISTS user1 address
(integer) 0
127.0.0.1:6379> HEXISTS user1 name
(integer) 1

字段不存在赋值  第一次赋值生效

127.0.0.1:6379> HSETNX user1 address beijing
(integer) 1
127.0.0.1:6379> hsetnx user1 address shanghai
(integer) 0
127.0.0.1:6379> hget user1 address
"beijing"

数字递增HINCRBY

127.0.0.1:6379> HINCRBY user1 age 20
(integer) 20
127.0.0.1:6379> hincrby user1 age 1
(integer) 21
127.0.0.1:6379> hincrby user1 age 2
(integer) 23

删除字段hdel

127.0.0.1:6379> hdel user1 age
(integer) 1

只获取字段名hkeys

127.0.0.1:6379> hkeys user1
1) "name"
2) "gender"
3) "email"
4) "phone"
5) "address"

获取值hvals

127.0.0.1:6379> hvals user1
1) "tom"
2) "male"
3) "bob@tedu.cn"
4) "12212132345"
5) "beijing"

获取字段数量 hlen

127.0.0.1:6379> hlen user1
(integer) 5

https://www.runoob.com/redis/redis-hashes.html          #Redis哈希

3、列表类型

 使用双向链表

LPUSH向列表左边增加元素

127.0.0.1:6379> lpush numbers 1
(integer) 1
127.0.0.1:6379> LPUSH numbers 234
(integer) 2

取出所有元素

127.0.0.1:6379> LRANGE numbers 0 -1
1) "234"
2) "1"

向右边增加元素

127.0.0.1:6379> RPUSH numbers 0 -1 -2
(integer) 4
127.0.0.1:6379> LRANGE numbers 0 -1
1) "1"
2) "0"
3) "-1"
4) "-2"

列表两端弹出元素

127.0.0.1:6379> LPOP numbers
"234"

127.0.0.1:6379> RPOP numbers
"-2"

删除列表指定值

127.0.0.1:6379> LPUSH numbers 0 1 2 0 1 2
(integer) 9
127.0.0.1:6379> RPUSH numbers 2 1 0 2 1 0
(integer) 15
127.0.0.1:6379> LRANGE numbers 0 -1
 1) "2"
 2) "1"
 3) "0"
 4) "2"
 5) "1"
 6) "0"
 7) "1"
 8) "0"
 9) "-1"
10) "2"
11) "1"
12) "0"
13) "2"
14) "1"
15) "0"
127.0.0.1:6379> LREM numbers 2 1       #从左侧删
(integer) 2

127.0.0.1:6379> LRANGE numbers 0 -1
 1) "2"
 2) "0"
 3) "2"
 4) "0"
 5) "1"
 6) "0"
 7) "2"
 8) "1"
 9) "0"
10) "2"
11) "1"
12) "0"
127.0.0.1:6379> LREM numbers -2 0        #从右侧删
(integer) 2
127.0.0.1:6379> LRANGE numbers 0 -1
 1) "2"
 2) "0"
 3) "2"
 4) "0"
 5) "1"
 6) "0"
 7) "2"
 8) "1"
 9) "2"
10) "1"
127.0.0.1:6379> LREM numbers 0 0   #删除所有0
(integer) 3
127.0.0.1:6379> LRANGE numbers 0 -1
1) "2"
2) "2"
3) "1"
4) "2"
5) "1"
6) "2"
7) "1"

获取下标为0的值

127.0.0.1:6379> LINDEX numbers 0

"2"

​     <u>#   获取下标为1 的值为10</u> 

127.0.0.1:6379> LSET numbers 1 10
OK
127.0.0.1:6379> LRANGE numbers 0 -1
1) "2"
2) "10"
3) "1"
4) "2"
5) "1"
6) "2"
7) "1"

4、集合类型

无序,每个元素都不相同

增加/删除元素

127.0.0.1:6379> SADD letters a b c
(integer) 3
127.0.0.1:6379> SADD lettets b c d
(integer) 3
127.0.0.1:6379> SMEMBERS letters
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> SREM letters a c
(integer) 2
127.0.0.1:6379> SMEMBERS letters
1) "b"

交集、并集、差补

127.0.0.1:6379> SADD s1 a b c
(integer) 3
127.0.0.1:6379> SADD s2 b c d
(integer) 3
127.0.0.1:6379> SINTER s1 s2
1) "c"
2) "b"
127.0.0.1:6379> SUNION s1 s2
1) "c"
2) "d"
3) "b"
4) "a"
127.0.0.1:6379>
127.0.0.1:6379> sdiff s1 s2
1) "a"
127.0.0.1:6379>
127.0.0.1:6379> sdiff s2 s1
1) "d"

获取集合中元素个数

127.0.0.1:6379> SCARD letters
(integer) 1
127.0.0.1:6379> SCARD s1
(integer) 3

随机取值

127.0.0.1:6379> SRANDMEMBER s1 3
1) "c"
2) "b"
3) "a"

随机弹出

```
127.0.0.1:6379> SPOP s1
"a"
```

5、有序集合类型

集合元素不能重复

ZADD 增加元素个数

127.0.0.1:6379> zadd scores 88 tom 90 jerry 75 bob 92 alice
(integer) 4
127.0.0.1:6379> ZRANGE scores 0 -1
1) "bob"
2) "tom"
3) "jerry"
4) "alice"
127.0.0.1:6379> ZRANGE scores 0 -1 withscores
1) "bob"
2) "75"
3) "tom"<u></u>
4) "88"
5) "jerry"
6) "90"
7) "alice"
8) "92"

修改某个元素值

127.0.0.1:6379> zadd scores 85 jerry
(integer) 0

获取元素分数

获取指定范围的值

127.0.0.1:6379> zrangebyscore scores 80 90 withscores
1) "jerry"
2) "85"
3) "tom"
4) "88"

获取元素数量

```
127.0.0.1:6379> ZCARD scores
(integer) 4
```

获取指定范围元素个数

127.0.0.1:6379> zcount scores 80 90
(integer) 2

增加某个元素分数

127.0.0.1:6379> zincrby scores 3 bob
"78"

获取元素排名 默认升序

127.0.0.1:6379> zrank scores tom
(integer) 2                     #升序

127.0.0.1:6379> zrevrank scorces alice
(nil)                                   # 降序

6、其他操作

查看key过期时间

127.0.0.1:6379> ttl name
(integer) -2         #-1表示永不过期

127.0.0.1:6379> set user1:login 122234 ex 60
OK

设置超时时间

127.0.0.1:6379> expire password 20
(integer) 1
127.0.0.1:6379> ttl password
(integer) 12
127.0.0.1:6379> ttl password
(integer) -2                     #-2表示已过期

查看key是否存在

127.0.0.1:6379> exists password
(integer) 0

数据库操作命令 

 16个库,默认在第1个

127.0.0.1:6379> move name 1
(integer) 0
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)

- 清除库

```
# 清除当前库
127.0.0.1:6379[1]> FLUSHDB
OK
```

127.0.0.1:6379[1]> select 0       #切换0号库
OK
127.0.0.1:6379> keys *
 1) "s2"
 2) "s1"
 3) "hi"
 4) "letters"
 5) "username"
 6) "user1"
 7) "scores"
 8) "num"
 9) "post:10"
10) "numbers"
11) "lettets"

 关闭Redis

127.0.0.1:6379> shutdown
not connected> exit

 修改Redis运行参数

监听地址 默认本机127.0.0.1

监听端口 6379

89行 保护模式 设置为no

70行注释

502行requirepass   加上新密码

[root@redis1 ~]# vim /etc/redis/6379.conf 

```
protected-mode no        # 关闭保护模式,以允许不指定服务绑定在哪个地址
# bind 127.0.0.1         # 注释此行,运行在0.0.0.0上
port 6379                # 端口号
requirepass tedu.cn      # 密码
```

- 修改启动脚本     43行填上密码 /init.d/redis_6379

```
[root@redis1 ~]# vim +43 /etc/init.d/redis_6379 
... ...
            $CLIEXEC -p $REDISPORT -a tedu.cn shutdown
... ...
```

启动服务测试

[root@nginx ~]# service redis_6379 start
Starting Redis server...
[root@nginx ~]# ss -tlnp | grep :6379
LISTEN     0      128          *:6379                     *:*                   users:(("redis-server",pid=5415,fd=7))
LISTEN     0      128         :::6379                    :::*                   users:(("redis-server",pid=5415,fd=6))
[root@nginx ~]# redis-cli -h 192.168.1.11 -p 6379 -a tedu.cn
192.168.1.11:6379> PING
PONG

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值