redisDay17

本文详细介绍Redis数据库的基础配置、启动步骤及各种数据类型的使用方法。包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Zset)等数据结构的操作命令,并介绍如何进行键管理和数据库切换。

Redis

说明:redis是一个高效的键值对存储的nosql数据库(非关系型数据库)

特点:读取效率高 常用于作mysql数据库的缓存 来减轻MySQL数据库的压力

一 前期准备

打开Windows的配置文件

redis.windows.conf

387行 requirepass 密码

455行 maxheap 1024000000 设置最大数据堆的大小

port 端口号 6379

二 开启redis服务

(1) cd C:\redis64-2.8.2101

>redis-server.exe redis.windows.conf #执行redis服务的命令 并加载Windows的配置文件

(2) 新建一个终端

cd C:\redis64-2.8.2101

>Redis-cli.exe #.exe 可以省略

>auth “123456” #输入密码 就是你在Windows.conf里面设置的那个

三 Redis 值的类型

  1. 字符串 String
  2. 哈希 Hash
  3. 列表 List
  4. 集合 Set
  5. 有序集合 Zset

Redis命令的网址(必备):http://redis.cn/commands.html

四 String字符串

存储形式 :key value

String类型 是Redis最基本的数据类型 一个键最大能存储512mb

(1) 设置键值

1.设置键值对

set key value

set  name "zhangsan"
2. 设置键值及过期时间(秒单位)

setex key seconds value

setex age 10 20
3. 查看过期时间

ttl key

ttl  age
4. 设置多个键值

mset key value [key value]

mset  name 'zhangsan' age 18 sex 'w'

(2) key 的操作

A 根据key 获取 value

get key

get name
B 根据多个key 获取多个值

mget key [key…]

mget  name  age  sex

(3) 运算

要求:字符串的值 必须是 字符串类型的数字

A 将对应的 key 加1

incr key

incr age
B 将对应的值减1

decr key

decr  age
C 将key对应的值 加 整数

incrby key num

incrby  age  10
D 将key对应的值减整数

decrby key num

decrby   age 10

(4) 其它操作

A 追加值

append key value

append age 20
B 获取值的长度

strlen key

strlen  name

五 key的操作

A 查找所有符合pattern(正则表达式) 的key

keys * 查看所有的key

keys n??? 查找以n为开头长度为4个的key

keys *n* 查找 包含 n 的所有的key

支持的正则表达式:
  • h?llo 匹配第二位为任意的字符
  • h*llo 匹配第二位为任意字符 0个 或多个
  • h[ab]llo 匹配第二位为 a或者b的字符的key
  • h[^e]llo 匹配第二位除了e字符以外的任意的key
  • h[a-z]llo 匹配第二位为a-z的小写字母的key
B 判断key是否存在

exists key(存在返回1 不在返回0)

exists  name
C 查看key对应的value的类型

type key

type  name
D 删除key及 value

del key [key…]

E 设置key的过期时间

expire key seconds

expire  name 10   #设置name键 过期时间为 10秒
F 以毫秒为单位 返回过期时间

pttl key

pttl  name
G 移除key的过期时间

persist key

persist name
H 删除所有的key

flushdb 只删除当前库里面的所有key

flushall 删除所有ku的key

I 修改key的名称(如果新的key的名字存在 则会把存在的key的值 覆盖掉)

rename key newkey

rename name newname
J 将key移动到其它的数据库里

move key db

move name 1     #将name的键值对 移动到 1库里   那么 原来的库该key不存在
K 随机返回一个 key

randomkey

五 HASH类型

存储形式

key = {

​ name:”zs”,

​ age:18

}

hash是一个字符串String类型的field 和 value 的映射表(键值对)

key ->field=>value

1 设置
A.设置 hash 的单个值

hset key field value

hset hash name 'zs'
B 设置多个值

hmset key field value [field value]

hmset   hash  name 'zs' age 18 sex  'w'
C 为hash 中指定字段的整数值上 增量 increment

hincrby key field increment

hincrby  hash  age  10
D 为hash 中指定字段的浮点数值上 增量 increment

hincrbyfloat key field increment

hincrbyfloat hash money 0.4
E 当field 字段不存在时 设置hash字段的值

hsetnx key field value

hsetnx  hash money  10   #如果hash 键 里每天money字段  那么就会添加money字段 否则不修改

2 获取

A 获取一个值

hget key field

hget hash name
B 获取多个 字段的值

hmget key field

hmget hash  name  age  sex
C 获取hash 所有的字段和值

hgetall key

hgetall  hash
D 获取所有的字段

hkeys key

hkeys  hash
E 获取所有的字段的值

hvals key

hvals  hash
F 获取当前哈希key的数据的个数

hlen key

hlen  hash

3 其它

A 判断当前的字段是否存在在(在返回1 否则返回0)

hexists key field

hexists hash name
B 删除字段和值

hdel key field [field]

hdel  hash  name  age  sex
C 后去哈希key里面field字段值的长度

hstrlen key field(版本之间存在区别)

六 LIST 列表

概述:列表是简单的字符串列表 按照插入顺序排序 你可以把一个元素 添加到它的左边(头部) 或者是右边(尾部)

[1,2,3,4]

1 设置

A 在头部插入数据

lpush key value [value]

lpush list 1 2 3 4 5
在列表头部插入数据 只有当前列表存在 才会插入数据

lpushx key value

lpushx  list  2
B 在尾部插入数据

rpush key value [value]

rpush  list  7 8
在列表尾部插入数据(列表存在则写入数据成功)

rpushx key value

rpushx mylist  2
C 在一个元素的前后 插入 数据

linsert key before|after value value

linsert mylist before 'hello' 'world'
linsert mylist after 'hello' 'world'
D 设置指定索引的元素的值

lset key index value

lset mylist 0 'hello'  #把索引为0的值 设置为 hello
lset mylist -1 'hello'  #把索引为0的值 设置为 hello
注意:

index 索引的值 从0开始

index 的值可以为 负数 -1代表 最后一个

2 获取值

A 从左侧将值移除并返回

lpop key

lpop  mylist
B 从右侧将值移除并返回

rpop key

rpop  mylist
C 从存于 key 的列表里移除前 count 次出现的值为 value 的元素

LREM key count value

  • count > 0: 从头往尾移除值为 value 的元素。
  • count < 0: 从尾往头移除值为 value 的元素。
  • count = 0: 移除所有值为 value 的元素。
lrem mylist 1 3    #从左往右 删除1个3
lrem mylist -1 2   #从右往左 删除 1个2
D 返回 存储在key的列表中 的指定范围的元素

lrange key start end

lrange mylist  0  -1  #取出全部数据
lrange mylist 2 5     #从索引值为2取到索引值为5的数据
lrange mylist -3 5
lrange mylist -3 -1
E 裁剪列表

ltrim key start stop

ltrime  mylist  -3  -1  #从倒数第三个-倒数第一个 裁剪出来保留 以外的全部删除
F 返回当前key列表的长度

llen key

llen  mylist
G 返回列表中 索引所对应的值

lindex key index

lindex  mylist  0 #获取索引值为0 的值

七 set 集合

概述:无序集合 元素类型为String,元素具有唯一性 不重复

{‘a’,’b’}

1 设置

A 添加元素

sadd key member

sadd set 'a' 'b' 'c'

2 获取

A 返回集合中所有的key的元素

smembers key

smembers set
B 返回集合元素的个数

scard key

scard  set
C 移除集合中随机的一个元素 并返回

spop key

spop set
D 返回集合中一个或多个随机数

srandmember key count

srandmember set
srandmember set 2
E 移除集合中 一个或者 多个 成员

srem key member1 [member2]

srem  set 'a' 'b'

3 其它操作

A 求多个集合的交集

sinter key [key…]

sinter set set1
B 求多个集合的差集 (注意比较顺序)

sdiff key [key…]

sdiff set  set1
C 求 多个集合的合计

sunion key [key….]

sunion set set1
D 判断元素是否在集合中 存在返回1 不在返回0

sismember key member

sismember  set  'a'

八 zset 有序集合

概述:

有序集合 元素为 String类型 元素具有唯一性 (不重复)

每个元素 都会关联一个score (分数)权重 通过权重来排序 score的值可以相同

1. 设置

A 添加

zadd key score member [score member]

zadd zset 1 'a' 3 'c' 2 'b'
B 有序集合中 对指定的成员增量 increment

zincrby key increment member

zincrby zset 2 'a'  #给有序集合zset 元素‘a' 加上权重2

2. 获取

A 返回指定范围的元素

zrange key start end

zrange zset 0 -1 #显示全部
B 返回元素的个数

zcard key

zcard zset
C 返回有序集合中 score 在 min 和 max之间的元素的个数

zcount key min max

zcount zset 1 3
D 返回有序集合中 member(元素) 的权重(score)

zscore key member

zscore zset 'a'
E 返回当前key中 所有的权重(score)和元素(member)

zrange key start end withscores

zrange zset 0 -1  withscores  #查看当前有序集合中 所有的元素和权重

九 数据库的切换

概述:redis的数据库 从开始 递增 自动带有数据库 不需要手动创建

进入 redis以后 默认在 0 数据库

select num 切换到 哪个数据库

select 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值