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五种数据类型、及操作
-
-
list
列表 -
hash
哈希 -
set
集合 -
sorted sets
有序集合
key 有5中数据类型:string、list、set、zset(sorted set)、hash。
#设置 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 key #例 lpop my_rlist
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
# 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
# hkeys key 例 keys hkeys user
# hvals key 例 values hvals user
# hlen key 例 hlen user
# sadd key value [value] (唯一,无序) 例 sadd my_set m n b v c x z b
获取
# smembers key 例 smembers my_set
删除
# srem key member 例 srem my_set c
# 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
# sinterstore newkey key1 key2 例 sinterstore new_set my_set my_set2
并集
# sunion key1 key2 ... 例 sunion my_set my_set2
# sunionstore newkey key1 key2 例 sunionstore new_set2 my_set my_set2
差集
# sdiff key1 key2 sdiff my_set my_set2
# sdiffstore newkey key1 key2 例 sdiffstore new_set3 my_set my_set2
获取集合个数
# scard key 例 scard my_set
随机返回一个
# srandmember key 例 srandmember my_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 (withscores) zrange my_zset 0 -1 withscores
#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 key 例 zcard my_zset
# 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操作 用户是不会看我们数据库的 而是通过页面来看数据