redis基础操作

redis基础操作

1.redis特点

redis:基于键值对的非关系型数据库,工作在内存中,一个键值对容量是512M,官方给定读11W次/s,写8W次/s,除了作为数据库以外,还常用于部署缓存服务器和消息列队

  • 特点:
    1.速度快,性能好
    2.基于键值对的非关系型数据库,又叫远程字典服务
    3.功能丰富(基于数据库类型实现)
    4.支持多种客户端语言,c,c++,php,python,java等
    5.支持数据的持久化
    6.支持主从复制
    7.支持分布式
    8.支持哨兵
  • redis的数据类型
    字符串数据类型:string
    列表数据类型:list
    集合数据类型:set
    有序集合类型:zset
    哈希数据类型:hash

Redis数据库的数量是固定的,并在配置文件中设置。默认情况下,你有16个数据库。每个数据库都由一个数字(而不是名称)来标识。

2.数据库基本操作

切换连接到数据库(redis默认的数据库数量为16个,编号0-15)

127.0.0.1:6379> select 15
OK
127.0.0.1:6379[15]> select 14
OK

创建字符串数据类型的键值对,没有则创建,有则修改

#语法 set key value
127.0.0.1:6379[14]> set li lishuang
OK

查看已经创建的键值对

127.0.0.1:6379[14]> keys *
1) "li"

查看键值对是否存在

127.0.0.1:6379[14]> keys li
1) "li"

查语法看查看指定的键值对中的值

##语法 get key
127.0.0.1:6379[14]> get li
"lishuang"

统计已创建的键值对的数量

##语法 dbsize
127.0.0.1:6379[14]> dbsize
(integer) 1

判断指定的键值对是否存在,如果存在返回1,不存在返回0,如果指定多个键值对,返回的是存在的键值对的个数

语法 exists key [key ...]
127.0.0.1:6379[14]> exists li
(integer) 1

设置键值对的过期时间

语法 expire key seconds
127.0.0.1:6379[14]> expire wang 10
(integer) 1

查询过期时间,如果没有对键值对设置过期时间返回-1,已经过期返回-2,如果没有过期则返回剩余时间

127.0.0.1:6379[14]> ttl wang
(integer) -2

批量创建键值对

语法 mset key value [key value ...]
127.0.0.1:6379[14]> mset one 111 two 222 six 666
OK
127.0.0.1:6379[14]> keys *
1) "two"
2) "one"
3) "li"
4) "six"

批量查看键值对

语法 mset key1 value1 key2 value2
127.0.0.1:6379[14]> mget one two six
1) "111"
2) "222"
3) "666"

计数(自增)

语法 incr key #自增+1         incrby key n #指定添加多少
127.0.0.1:6379[14]> incr one
(integer) 112
127.0.0.1:6379[14]> incrby one 100
(integer) 212

计数(自减)

语法 decr key #自减-1     decrby key n #指定减多少
127.0.0.1:6379[14]> decr one 
(integer) 211
127.0.0.1:6379[14]> decrby  one 100
(integer) 111


以浮点数进行计算

语法  incrbyfloat key n ##n为正数是加,负数是减
127.0.0.1:6379[14]> incrbyfloat one -0.1
"110.9"
127.0.0.1:6379[14]> incrbyfloat one +0.1
"111"



追加值

append key value
append sll hahaha

计算字节长度

strlen key
strlen sll

获取部分字符

getrange key start end #0表示开始字符,-1表示结束字符
getrange sll 0 -1

查看指定键值对的类型

type key 
type sll

查看建的内部编码

object encoding key
object encoding sll

内部编码:对数据类型的详细划分
string的内部编码:raw int embstr
raw:键值对的数据类型为string,且值的字符个数大于等于44
embstr:键值对的数据类型为string,且字符个数小于等于44
int:键值对的数据类型为string,且值为整数
列表数据类型:每个列表键值对用来存储多个有序的字符串,一个列表中最大可以储存2^32-1个元素,列表中元素是由顺序的,可以通过索引下标获取某个元素或者某个范围内的列表,列表中的元素是可以重复的
创建一个列表或对列表进行追加数据:
#在指定元素前或后添加新元素,如果指定的元素存在多个,则按照元素顺序

在匹配到的第一个指定元素后面添加新元素
linsert mylist after 3 lala 之后
linsert mylist 3 before lala 之前

查看指定范围的元素,0代表开头,-1待定结尾
lrange key start end
lrange mylist 0 -1

查看列表中指定索引下标的元素
lindex key index
lindex mylistn 2

获取列表长度
llen key
llen mylistn

左删除/左弹出
lpop key
lpop mylistn

右删除
rpop key
rpop mylistn

删除指定元素
lrem key count value #删除列表中指定的值value,count表示删除的个数以及
顺序,为正数表示从左往右,为负数表示从右往左

lrem mylistn 1 lala

阻塞式弹出:blpop,brpop
blpop key timeout #如果指定的键不存在或列表元素空,则会出现阻塞状态
阻塞时间为timeout指定时间,如果timeout为0则一直阻塞
blpop new 5
list类型的内部编码:ziplist linkedlist quicklist
ziplist:压缩列表,当列表元素个数小于list-max-ziplist-entries的配置
默认(512)个,同时所有元素的大小都小于list-max-ziplist-value的配置
默认(64字节),redis使用ziplist作为列表数据类型的内部编码
linkedlist:不满足ziplist时使用
quicklist:集合ziplist和linkedlist的特点
集合数据类型:用来存储多个元素,集合中不允许有重复的元素,并且集合
中的元素时无序的,一个集合中最多允许有2^32-1,集合可以求交,并,差集

创建一个集合
sadd key value
sadd myset a b c a b c

查看集合中的元素
smembers key
smembers myset

计算集合中元素的个数
scard key
scard myset

删除元素
srem key value
srem myset a

判断元素是否在集合中
sismember key value
sismember myset a

随机从集合中返回指定个数的元素
srandmember key [count]
srandmember myset 3

随机删除集合中的元素并弹出
spop key [count]
spop myset
spop myset 2

求集合之间的交集,并集,差集
sadd ming_friend a b c d e f
sadd hong_friend a b d g i p

求小明和小红朋友的交集
sinter key1 key2
sinter ming_friend hong_friend

求小明和小红朋友的总和(并集)
sunion key1 key2
sunion ming_friend hong_friend

求是小明但不是小红的朋友(小明与小红的差集)
sdiff key1 key2
sdiff ming_friend hong_friend

对交集,并集,差集的结果进行保存
sinterstore d_set key1 key2
sinterstore mhj ming_friend hong_friend
sunionstore d_set key1 key2
sunionstore mhb ming_friend hong_friend
sdiffstore d_set key1 key2
sdiffstore mhc ming_friend hong_friend

内部编码
inset:集合中的元素都是整数,并且元素的个数小于set-max-insert-entries
(默认512)
hashtable:不满足inset
有序集合数据类型:在集合的基础之上,给集合中的每个元素添加分数,实现
对元素进行排序,分数必须是数值,不同元素的分数可以是重复的

创建有序集合
zadd key score1 value score2 value …
zadd music 10 xinyang 15 xiashan 20 shangshan

查看有序集合中的元素
zrange key start end [withscore]
zrange music 0 -1 withscores

计算有序集合中的元素的个数
zcard key
zcard music

查看指定元素的分数
zscore key value
zscore music xinyang

查看某个元素的排名
zrank key value
zrank music xinyang
zrevrank key value #降序
zrevrank music xiashan

删除指定的元素
zrem key value value2
zrem music xiashan

增加某个元素的分数
zincrby key increment value
zincrby music 5 xiashan
zincrby music 3 xinyang

对集合中的元素进行排序
zrange key start end [withscore] #升序
zrange music 0 -1 withscores
zrevrange key start end [withscore] #降序
zrevrange music 2 4 withscores

查看指定分数范围的成员
zrangebyscore key min max withscores #从小到大排序
zrangebyscore music 15 20 withscores
zrevrangebyscore key max min withscores #从大到小排序
zrevrangebyscore music 23 20 withscores

计算指定分数范围中元素的个数
zcount key min max
zcount music 15 23

删除指定范围内的元素

zremrangebyrank key start stop
zremrangebyrank music 0 1

求有序集合的交集和并集

zinterstore d_set key_nms key1 key2....
zinterstore one_two_j 2 one two
zunionstore d_set key_nums key1 key2....
zunionstore one_two_b 2 one two

内部编码
ziplist:有序集合元素个数小于zset-max-ziplist-entries(默认128个)
同时每个元素的值小于zset-max-ziplist-values(默认64字节)
skiplist:不满足ziplist
#哈希数据表类型:存储字段和值的映射,一个哈希键值对可以包含2^32-1个字段

创建哈希键值对中所有字段的值

hset key field values
hset user1 name peiqi
hset user1 passwd 123.com
hset user1 home home.xmj

查看哈希键值对中所有字段的值

hvals key
hvals user1

查看哈希键值对中指定字段的值

hget key field 
hget user1 name

批量添加哈希键值对的字段

hmset key field1 value field2 value 
hmset user2 name xmj passwd 123 home beijing

批量查询

hmget key field1 field2 field3
hmget user2 name passwd

计算哈希键值对中字段的个数

hlen key 
hlen user1 

删除哈希键值对中指定的字段

hdel key field
hdel user1 name 

判断哈希键值对中是否有这个字段

hexists key field
hexists user1 name

获取哈希键值对中所有的字段名

hkeys key
hkeys user1

获取哈希键值对中所有字段及值

hgetall key
hgetall user1

计算哈希键值对中指定字段的字节大小

hstrlen key field
hstrlen user1 passwd

计算哈希键值对中字段的值

hincrbyfloat key fireld x #x可以为正也可以为负,可以为整也可以是浮点数
hincrbyfloat vedio bo_num 100
hincrbyfloat vedio zan_num -1

#常用指令

#常用指令

对键进行重命名

rename key newkey
rename old new

随机返回一个键

randmkey

迁移键

move key db
move new 4

dump+restore实现redis节点之间的数据备份与还原
备份节点
dump key
获得十六进制序列
还原节点
restore key ttl 十六进制序列 #ttl为键值对的过期时间,0表示不过期

rpush,lpush,linsert 
rpush key value1 value2 value3
rpush mylist a b c
lpush key value1 value2 value3
lpush mylist1 1 2 3
linsert key after |before pivot value

#在指定元素前或后添加新元素,如果指定的元素存在多个,则按照元素顺序
在匹配到的第一个指定元素后面添加新元素

linsert mylist after 3 lala    之后
linsert mylist before 3 lala  之前

查看指定范围的元素,0代表开头,-1待定结尾

lrange key start end
lrange mylist 0 -1

查看列表中指定索引下标的元素

lindex key index
lindex mylistn 2

获取列表长度

llen key 
llen mylistn 

左删除/左弹出

lpop key 
lpop mylistn

右删除

rpop key
rpop mylistn

删除指定元素
lrem key count value #删除列表中指定的值value,count表示删除的个数以及
顺序,为正数表示从左往右,为负数表示从右往左

lrem mylistn 1 lala

阻塞式弹出:blpop,brpop
blpop key timeout #如果指定的键不存在或列表元素空,则会出现阻塞状态
阻塞时间为timeout指定时间,如果timeout为0则一直阻塞
blpop new 5
list类型的内部编码:ziplist linkedlist quicklist
ziplist:压缩列表,当列表元素个数小于list-max-ziplist-entries的配置
默认(512)个,同时所有元素的大小都小于list-max-ziplist-value的配置
默认(64字节),redis使用ziplist作为列表数据类型的内部编码
linkedlist:不满足ziplist时使用
quicklist:集合ziplist和linkedlist的特点
集合数据类型:用来存储多个元素,集合中不允许有重复的元素,并且集合
中的元素时无序的,一个集合中最多允许有2^32-1,集合可以求交,并,差集

创建一个集合

sadd key value 
sadd myset a b c a b c

查看集合中的元素

smembers key 
smembers myset

计算集合中元素的个数

scard key 
scard myset

删除元素

srem key value 
srem myset a

判断元素是否在集合中

sismember key value 
sismember myset  a

随机从集合中返回指定个数的元素

srandmember  key [count]
srandmember myset 3 

随机删除集合中的元素并弹出

spop key [count]
spop myset 
spop myset 2

求集合之间的交集,并集,差集

sadd ming_friend a b c d e f
sadd hong_friend a b d g  i p

求小明和小红朋友的交集

sinter key1 key2
sinter ming_friend hong_friend 

求小明和小红朋友的总和(并集)

sunion key1 key2
sunion ming_friend hong_friend

求是小明但不是小红的朋友(小明与小红的差集)

sdiff key1 key2
sdiff ming_friend hong_friend

对交集,并集,差集的结果进行保存

sinterstore d_set key1 key2
sinterstore mhj ming_friend hong_friend
sunionstore d_set key1 key2
sunionstore mhb ming_friend hong_friend
sdiffstore d_set key1 key2
sdiffstore mhc ming_friend hong_frien

d

内部编码
inset:集合中的元素都是整数,并且元素的个数小于set-max-insert-entries
(默认512)
hashtable:不满足inset
有序集合数据类型:在集合的基础之上,给集合中的每个元素添加分数,实现
对元素进行排序,分数必须是数值,不同元素的分数可以是重复的

创建有序集合

zadd key score1 value score2 value .....
zadd music 10 xinyang 15 xiashan 20 shangshan 

查看有序集合中的元素

zrange key start end [withscore]
zrange music 0 -1 withscores

计算有序集合中的元素的个数

zcard key
zcard music

查看指定元素的分数

zscore key value 
zscore music xinyang

查看某个元素的排名

zrank key value 
zrank music xinyang
zrevrank key value #降序
zrevrank music xiashan

删除指定的元素

zrem key value value2
zrem music xiashan

增加某个元素的分数

zincrby key increment value 
zincrby music 5 xiashan
zincrby music 3 xinyang

对集合中的元素进行排序

zrange key start end [withscore] #升序
zrange music 0 -1 withscores
zrevrange key start end [withscore] #降序
zrevrange music 2 4 withscores 

查看指定分数范围的成员

zrangebyscore key min max withscores #从小到大排序
zrangebyscore music 15 20 withscores
zrevrangebyscore key max min withscores #从大到小排序
zrevrangebyscore music 23 20 withscores

计算指定分数范围中元素的个数

zcount key min max
zcount music 15 23

删除指定范围内的元素

zremrangebyrank key start stop
zremrangebyrank music 0 1

求有序集合的交集和并集

zinterstore d_set key_nms key1 key2....
zinterstore one_two_j 2 one two
zunionstore d_set key_nums key1 key2....
zunionstore one_two_b 2 one two

内部编码
ziplist:有序集合元素个数小于zset-max-ziplist-entries(默认128个)
同时每个元素的值小于zset-max-ziplist-values(默认64字节)
skiplist:不满足ziplist
#哈希数据表类型:存储字段和值的映射,一个哈希键值对可以包含2^32-1个字段

创建哈希键值对中所有字段的值

hset key field values
hset user1 name peiqi
hset user1 passwd 123.com
hset user1 home home.xmj

查看哈希键值对中所有字段的值

hvals key
hvals user1

查看哈希键值对中指定字段的值

hget key field 
hget user1 name

批量添加哈希键值对的字段

hmset key field1 value field2 value 
hmset user2 name xmj passwd 123 home beijing

批量查询

hmget key field1 field2 field3
hmget user2 name passwd

计算哈希键值对中字段的个数

hlen key 
hlen user1 

删除哈希键值对中指定的字段

hdel key field
hdel user1 name 

判断哈希键值对中是否有这个字段

hexists key field
hexists user1 name

获取哈希键值对中所有的字段名

hkeys key
hkeys user1

获取哈希键值对中所有字段及值

hgetall key
hgetall user1

计算哈希键值对中指定字段的字节大小

hstrlen key field
hstrlen user1 passwd

计算哈希键值对中字段的值

hincrbyfloat key fireld x #x可以为正也可以为负,可以为整也可以是浮点数
hincrbyfloat vedio bo_num 100
hincrbyfloat vedio zan_num -1

#常用指令

对键进行重命名

rename key newkey
rename old new

随机返回一个键

randmkey

迁移键

move key db
move new 4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值