redis基本操作

1. 什么是Redis

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

Redis特点:
Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。

Redis应用场景:
因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

进入redis

redis-cli
#不能进入,就安装:
sudo apt-get update
sudo apt-get install redis-server

redis五种数据类型、及操作

  • string 字符串

  • list 列表

  • hash 哈希

  • set 集合

  • sorted sets 有序集合

key 有5中数据类型:string、list、set、zset(sorted set)、hash。

value :都是字符串类型的

string

#设置
set key value     例:   ( set name 'jianeng' )
#  获取
get key           例:   ( get name   )
# key是唯一的,不能用同一个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  love
#get name

redis 里面所有的 value。 都是字符串类型的

设置 / 获取 多个

#设置多个 string
mset key value  key value..
例子
mset username 'jianeng'  password  '123'

#获取多个
mget key key key ...
例
mget username password name 

key 操作

# 查看所有的key
 keys *
 keys n*

 
# 删除
 del key        例:    (del name)
 
# 查看key是否存在  ,存在返回 1, 不存在返回 0
 exists key 

# 查看key类型
 type key

运算

set num 1    # 自动识别,字符串里面的 整数
# +1
incr key        例 (incr num)
# -1
decr key        例 (decr num)

# +整数
incrby key increment              例 (incrby num 50)

# -整数
decrby key increment              例 (decrby num 50)

list

设置

#lpush  左添加  (栈)
lpush  key  value     #例  lpush my_list a b c d

#rpush  右添加   (队列)
rpush  key  value     #例  rpush my_rlist a b c d

查看

# lrange  key  start  stop
例  查看所有
lrange my_list 0 -1

获得list的元素个数

lindex key  index    #例 lindex my_list  3

删除

lpop 删除左边第一个

lpop key        #例 lpop  my_rlist

rpop 删除右边第一个

rpop key        #例 rpop  my_list

lrem 删除指定

rpush  test_list  a a b b c d e a d f m c
#lrem  key count  value

#count > 0 从左往右 删除数量为count的value
例 : lrem test_list 2 a

#count = 0 删除所有的 value
例 : lrem test_list 0 a

#count < 0 从右往左 删除数量为count的value
例 : lrem test_list -1 b

hash

设置

#  hset key field value
例  user { name:jianeng}
hset user name jianeng

获取

#  hget key field
例
hget user name

删除

#  hdel key field
例
hdel user name

设置多个

#hmset key field value [field value]
例  user{name:jianeng , age:18, sex:male }
hmset user name jianeng age 18 sex male

获取多个

# hmget key field field
例
hmget user name age

获取全部field value

# hgetall key 
例     itmes
hgetall user

获取所有的field

# hkeys key
例      keys
hkeys user

获取所有的value

# hvals key 
例     values  
hvals user

获取field的个数

# hlen key
例    
hlen user

set 集合

设置

# sadd key value [value]    (唯一,无序)
例
sadd my_set m n b v c x z b

获取

# smembers key
例
smembers my_set

删除

srem指定删除

# srem key member
例
srem my_set c

spop随机删除

# spop  key
例
spop my_set

移动一个集合的值到另一个集合

# smove oldkey newkey member
例
smove my_set my_set2 z

判断集合存在某个值

# sismember key value
例
sismember my_set2 b   

交集

# sinter key1 key2 ..
例
sinter my_set my_set2

把 key1 key2的交集合并到newkey

# sinterstore newkey key1 key2
例
sinterstore  new_set my_set my_set2

并集

# sunion key1 key2 ...
例
sunion my_set my_set2

把 key1 key2的并集合并到newkey

# sunionstore newkey key1 key2
例
sunionstore new_set2 my_set my_set2

差集

# sdiff key1 key2
sdiff my_set my_set2

把 key1 key2的差集合并到newkey

# sdiffstore newkey key1 key2
例
sdiffstore new_set3 my_set my_set2

获取集合个数

# scard key
例
scard my_set

随机返回一个

# srandmember key
例
srandmember my_set

zset

设置

# 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    (withscores)
zrange my_zset 0 -1  withscores
  • zrevrange倒序
#zrevrange key start stop
zrevrange my_zset 0 -1  withscores

删除

#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 在给定区间的元素

# zrange my_zset 0 -1 withscores

 zrangebyscore my_zset 2 3 withscores
#返回了 score 在 2~3 区间的元素

zcount 返回集合中 score 在给定区间的数量

# zcount key min max
例
zcount my_zset 2 3

zscore : 查看score值

# zscore key member
例
zscore my_zset two

zremrangebyrank : 删除集合中排名在给定区间的元素(正向)

# zrange my_zset 0 -1 withscores
zremrangebyrank my_zset 1 3

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

# zrange my_zset 0 -1 withscores
zremrangebyscore my_zset 3 5

Redis发布和订阅

#发布 
publish 频道 消息


# 订阅
subscribe 频道

 redis修改密码

1. 先找到配置文件 
cd /etc/redis 
2. 修改redis.conf
sudo vim redis.conf
2.1 找到 requirepass --> 正常来说应该是在你的第396行 
/requirepass --> vim 查找字符串
# requirepass foobared 
2.2 只需要更改 foobared 去掉注释
requirepass 自己定义的密码
2.3 保存退出
:wq
3. 重启服务
sudo service redis-server restart
4. reids-cli -- 先进去
auth 自己密码

5. 如果是中文的话 reids-cli --raw 
一般来说 用的不是很多 因为我们更多的是通过python操作 用户是不会看我们数据库的 而是通过页面来看数据

  

原文地址:https://www.cnblogs.com/woaixuexi9999/p/9220957.html