~redis数据库的使用

一、redis介绍

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

  redis特点:

  • 快速响应,数据量小。
  • 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

 

1、string字符串操作

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

> 基本操作:

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

# 获取value值
get key            如:get name 

# key是唯一的,不能使用同一个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类型的fieldvalue的映射表key:(field:value),特别适合用于存储对象,hashkey必须是唯一的。

 > 设置

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

猜你喜欢

转载自www.cnblogs.com/Cyzhouke/p/11594919.html