Redis数据库的使用

一、redis介绍

redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库,redis全称为:Remote Dictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset、hash。

  redis特点:

  • 快速响应,数据量小。
  • redis以内存作为数据存储介质,所以读写数据的效率特别高,远远超过其他数据库

二、redis的五种数据类型

1、string字符串

2、list列表

3、hash哈希

4、set集合

5、sorted sets有序集合

三、redis数据操作

# 进入redis
redis-cli --raw

# 安装redis:
sudoi apt-get update
sudo apt-get install redis-server

# 切换数据库——SELECT

  # 切换到数据库1

  127.0.0.1:6379> select 1

  

1、string字符串操作

string字符串可以为整形、浮点型和字符串,统称为无素。

# 设置:
set key value      如:set name 'weiwei'

# 获取value值
get key            如:get name     # key是唯一的,不能使用同一个key,不然就会覆盖


# 查看所有的key
keys *

# 删除key
del key              如:del name

# 查看key是否存在,存在返回1,不存在返回0
exists key

# 查看key类型
type key

# -1:表示永久,-2:表示不存在
ttl key               如:ttl name

# 给已经存在的key,设置过期时间
expire key seconds           如:expire name 20

# 设置key的同时,设置过期时间
set key value ex seconds    如:set age 18 ex 20
或
setex key seconds value     如:setex sex 20 ''

# 给已有的value,再添加新的值
append key value                 如:append name xiaoxiao

#设置多个string
mset key value key value           如:mset name '小小' age 20

#获取多个string
mget key key key ....       如:mget name age

#运算

set num 1
# value+1
incr key                  如:incr num

# value-1               
decr key                 如:decr num


# 自定义:+整数
incrby key increment                   如:incrby num 50

# 自定义:-整数
decrby key increment                   如:decrby num 50

1.2、list

list:实现队列,元素不唯一,先入先出原则

>设置

# lpush:左添加  (栈:先进后出)
lpush key value                  如:lpush name a b c d

# rpush:右添加  (队列:先进先出)
rpush key value                  如:rpush age 20 21 22 23

> 查看
lrange key start stop            如:lrange name 0 -1   (查看所有)

> 获得list的元素个数
llen key                         如:llen name

> 查看位于index位置上的元素
lindex key index               如:lindex name 3

> 删除
# lpop:删除左边第一个
lpop key                   如:lpop name

# rpop:删除右边第一个
rpop key                  如:rpop name

#lrem:删除指定
# count>0,从左往右,删除数量为count的value
lrem age 2 20

# count=0,删除所有的value
lrem age 0 21

# count<0,从右往左,删除数量为count的value
lrem age -1 22

1.3、hash

hash:是一个string类型的field和value的映射表key:(field:value),特别适合用于存储对象,hash的key必须是唯一的。

>设置

hset key field value                   如:hset user name lucky

# 设置多个
hmset key field value [field value]    如:hmset user name lucky age 18 sex ''

> 获取
hget key field                         如:hget user name

# 获取多个
hmget key field field                  如:hmget user name age

# 获取所有的field value
hgetall key                            如:hgetall user

# 获取所有的field
hkeys key                              如:hkeys user

# 获取所有的value
hvals key                              如:hvals user

# 获取field的个数
hlen key                               如:hlen user

# 获取field的类型
type key                               如:type user

> 删除
hdel key field                         如:hdel user name

1.4、set集合

> 设置
sadd key value [value ...]             如:sadd age 21 22 25 24 23

> 获取
smembers key                           如:smembers age
> 删除
# srem:指定删除
srem key member                        如:srem age 21

# spop:随机删除
spop key                               如:spop age

> 移动一个集合的值到另一个集合
smove oldkey newkey member             如:smove ages age 1

> 判断集合是否存在某个值(1存在,0不存在)
sismember key value                    如:sismember age 1

> 交集
sinter key1 key2 ...                   如:sinter age ages

# 将key1、key2的交集合并到newkey
sinterstore newkey key1 key2           如:sinterstore name age ages

> 并集
sunion key1 key2 ...                   如:sunion age ages

# 将key1,key2的并集合并到newkey
sunionstore newkey key1 key2           如:sunionstore names age ages

> 差集
sdiff key1 key2                        如:sdiff age ages

# 将key1,key2的差集合并到newkey
sdiffstore newkey key1 key2            如:sdiffstore names age ages

> 获取集合个数
scard key                              如:scard names

> 随机返回一个
srandmember key                        如:srandmember names

1.5、sorted set(有序集合)

> 设置
zadd key score member (权,权重。顺序)
如:
zadd my_zset 1 'one'
zadd my_zset 2 'two'
zadd my_zset 3 'three'
zadd my_zset 4 'four'
zadd my_zset 5 'five'

> 获取
# zrange:正序
zrange key start stop                如:zrange my_zset 0 -1

# zrevrange:倒序
zrevrange key start stop             如:zrevrange my_zset 0 -1

> 删除
zrem key member                      如:zrem my_zset two

> 索引
# zrank:正序
zrank key member                             如:zrank my_zset three


# zrevrank:反序
zrevrank key member                        如:zrevrank my_zset three

> zcard:查看有序集合元素数
zcard key                                  如: zcard my_zset

> zrangebyscore:返回集合中score在给定区间的元素
zrangebyscore my_zset 2 3 withscores

> zcount:返回集合中score在给定区间的数量
zcount key min max                             如:zcount my_zset 2 3

> zscore:查看score的值
zscore key member                                  如:zscore my_zset one

> zremrangebyrank:删除集合中排名在给定区间的元素
zremrangebyrank my_zset 1 3

> zremrangebyscore:删除集合中score在给定区间的元素
zremrangebyscore my_zset 1 2

 

posted @ 2020-04-04 22:53  泪无殇  阅读(164)  评论(0)    收藏  举报