redis基本操作
redis简介
Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
Redis特点:
Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
Redis应用场景:
因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,
将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
如何安装和进入redis数据库(Linux系统)
安装
sudo apt-get update
sudo apt-get install redis-server
#Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。
#默认使用 0 号数据库 默认开16个库
SELECT 1 # 使用 1 号数据库,Redis 现在的命令提示符多了个 [1]
进入
redis-cli
redis-cli --raw #能显示中文
exit #退出
redis五种数据类型及操作
-
-
list
列表 -
hash
哈希 -
set
集合 -
sorted sets
有序集合
string
string 类型是 redis 最基本的类型, string 类型,一个 key 对应一个 value,一个 value 最大能存储512MB的数据。
-
set key value
-
设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
-
set name 'joe'
-
-
get key
-
返回key的值,若key不存在则返回nil
mset key value [key value..]
-
为多组key设置值,该操作为原子操作,要么一组都设置成功,要么一组都设置失败;
-
mset username 'root' password '123' name 'joe'
-
-
-
返回一个或多个key的值,若key不存在返回nil,若key存在但不是字符串返回nil
-
mget username, password, name #有,号会被认为是key的一部分
mget username password name
-
-
append key value
-
将指定的值追加到key末尾,若key不存在,则创建并赋值,返回追加后的字符串长度
-
append name love
-
-
ttl key
-
返回key的剩余生存时间, -1 表示永久存在, -2表示不存在
-
-
set key value ex seconds
-
设置 key的同时,设置过期时间(单位:秒) key 过期后将不再可用,会被系统自动删除。
-
set age 18 ex 20
或 setex key seconds value 例: ( setex sex 20 '男' )
-
-
persist key
-
移除指定key的生存时间,成功返回1,若key不存在或不存在生存时间时返回0;
-
全局key操作
-
rename key newkey 改名
-
当key和newkey相同或者key不存在时返回一个错误,当newkey已存在时则会覆盖;
-
keys * # 查看所有的key
del key # 删除 返回成功的个数
exists key # 查看key是否存在 返回存在个个数
type key # 查看key类型
expire key seconds #设置过期时间
persist key #移除过期时间
-
列表的元素类型为string,按照插入顺序排序在列表的头部或者尾部添加元素.
-
lpush key value[value...]
-
在头部插入数据
-
lpush key value #例 lpush my_list a b c d
-
在尾部添加数据
-
rpush key value #例 rpush my_rlist a b c d
-
-
lindex key index
-
返回列表中元素的值。index从0开始,当index超出索引时返回null
-
lindex my_list 3 #查看第三个
-
-
lrange key start stop
-
查看索引范围内元素的值
-
lrange my_list 0 -1 #查看所有值
-
-
llen key
-
返回列表的长度
llen my_list
-
-
lset key index newvalue
-
指定索引号进行修改
-
lset my_list 0 hello
-
-
删除
-
lpop key 删除左边第一个
-
rpop my_list
-
rpop key 删除右边第一个
-
rpop my_list
-
hash
是一个键值(key=>value)对集合。是string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象, field 域, value 值
设置/修改
-
hset key field value
-
将field-value设置到hash表中,若key不存在会新建hash表再赋值,已存在则会覆盖;
-
hset user name xiaoming #user { name:xiaoming}
-
-
hmset key field1 value1[field value...]
-
同时设置多个
-
# user {name:xiaoming , age:18}
hmset user name xiaoming age 18
-
查看
-
hget key field
-
获取
value
-
hget user name
-
-
hmget key field[field...]
-
获取多个
value
-
hmget user name age
-
-
hvals key
-
获取全部
value
-
-
hkeys key
-
获取所有的
field
-
-
hgetall key
-
获取全部
field
和value
-
-
hlen key
-
查看有几个键值对
-
-
hexists key field
-
判断hash表中指定域是否存在,返回1,若key或field不存在则返回0;
-
hexists user age
-
删除
-
hdel key field
-
hdel user name
-
set
元素为string类型,无序集合,元素具有唯一性,不重复
-
sadd key member [member...] 增加元素
-
将一个或多个member元素加入到集合key中,若member已存在那么会忽略此元素,
-
sadd my_set m n b v c x z b
-
-
scard key
-
返回集合key中元素的个数;
-
-
smembers key
-
获取集合中所有元素
-
-
sismember key member 判断集合存在某个值
-
判断member在key中是否已存在, 返回0或1
-
sismember my_set b
-
-
删除
-
srem key member [member...]
-
移除一个或多个元素,不存在的member会被忽略,返回被移除元素个数
-
srem my_set a b n
-
-
spop key 随机删除
-
移除并返回集合中的一个随机元素,当key不存在时返回NULL
-
-
zset
类似于Set,不同的是Sorted中的每个成员都分配了一个分数(Score)用于对其中的成员进行排序(升序)。
zset的成员是唯一的,但分数(score)却可以重复。
添加/修改
-
zadd key score member[ [score member] ..]
-
设置, 存在就更新
-
zadd my_zset 1 'one'
zadd my_zset 2 'tow'
zadd my_zset 10 a 20 b 30 c 40 d 50 a
-
查看
-
zscore key member
-
查看score值
zscore my_zset a
-
-
zrange key start stop[withscores]
-
按索引返回key的成员, withscores表示显示score
-
zrange my_zset 0 -1 #显示全部
-
-
zrangebyscore key min max
-
返回集合中 score 在给定区间的元素
-
zrangebyscore zset 10 30
-
删除
-
zrem key member [member...]
-
移除有序集合中的一个或多个元素,若member不存在则忽略;
-
zrem my_zset two
-
-
zremrangebyrank min max :
-
删除集合中索引在给定区间的元素
zremrangebyrank my_zset 1 3
-
-
zremrangebyscore min max :
-
删除集合中 score 在给定区间的元素
zremrangebyscore my_zset 10 30
-