redis数据操作



数据操作

  • redis是键值对的数据
  • 键的类型是字符串
  • 值的类型有以下几种:
    • 字符串
    • hash
    • list
    • set
    • 有序集合zset

String

  • 最大存储512MB数据
  • 二进制安全的(任何数据:数字、图片、序列化)
设置

设置键值

set key value

设置键值

set key value
  • 设置键值
set key value
python@ubuntu:/usr/local/redis$ cd
# 默认连接本机端口:
python@ubuntu:~$ redis-cli
127.0.0.1:6379> ping
PONG
# 连接成功
127.0.0.1:6379> set 'py3' 'hello'
OK
  • 设置键值以及过期时间,以秒为单位
SETEX KEY seconds value
setex 'py32' 1 'hello dimples'
  • 设置多个键值
MSET key value {key value ...}
获取
  • 根据键获取值,如果不存在键 就返回nil
GET KEY
# 获取
127.0.0.1:6379> get py32
(nil)   ==表示啥也没有
  • 根据多个键获取多个值
megt key1 key2 ...
127.0.0.1:6379> mget py3 py31
1) "hello"
2) "hello"
运算
  • 值 :必须是数字
  • 将key对应的value加1
incr key

例如:

127.0.0.1:6379> set 'p' '11'
OK
127.0.0.1:6379> incr p
(integer) 12
127.0.0.1:6379> get p
"12"
  • 将key对应的value减1
decr key
其他
  • 追加值
127.0.0.1:6379> append py3 'world'
(integer) 10
127.0.0.1:6379> get py3
"helloworld"
  • 获取值长度
strlen
键命令
  • 查找键(支持正则)
keys pattern
127.0.0.1:6379> keys *  所有键
1) "aaaa"
2) "py3"
3) "p"
4) "py31"
5) "haha"
127.0.0.1:6379> keys '*1*'
1) "py31"
  • 判断键是否存在,存在返回1,不存在返回0
exists key

例:

127.0.0.1:6379> exists py32
(integer) 0
  • 查看键对应的值的类型
type
  • 删除键
del
  • 设置过期时间
  • 创建时如果没有设置过期时间,则一直存在,直到使用del删除
127.0.0.1:6379> del py31
(integer) 1
127.0.0.1:6379> expire py3 10 
(integer) 1
127.0.0.1:6379> ttl py3  查看剩余时间
(integer) 2
127.0.0.1:6379> ttl py3
(integer) -2
127.0.0.1:6379> keys * 
1) "shiyanlou"
2) "p"
3) "qianfeng"
127.0.0.1:6379> 超过10秒,删除成功
  • 查看有效时间
ttl key

hash

  • 存储对象(键值对格式)
设置
  • 设置单个属性
hset key field value

例:

127.0.0.1:6379> hset py3 name '罗晋'
(integer) 1
127.0.0.1:6379> type py3
hash
  • 设置多个属性
用空格分隔开  hset key field value [field value...]
获取
  • 获取一个属性的值
hget key field
  • 获取所有的属性和值
hgetall
127.0.0.1:6379> hgetall py3
1) "name"
2) "\xe7\xbd\x97\xe6\x99\x8b"
3) "gender"
4) "1"
  • 获取所有的属性
hkeys
  • 返回包含几个属性
hlen
  • 获取所有值
hvals
其它
  • 判断属性是否存在
hexists key field
  • 删除属性和值
hdel key field
  • 返回字符串长度
hstrlen key field

list

  • 列表的元素是String
  • 按照插入顺序排序
  • 在列表的头部或者尾部添加
设置
  • 在头部插入数据
lpush 键 值
  • 在尾部插入数据
rpush 键 值
  • 在每一个元素的前后插入新元素
  • pivot: 目标键 对应的索引
linsert 键 before|after pivot 值
127.0.0.1:6379> lpush py4 'abc'
(integer) 1
127.0.0.1:6379> lpush py4 '123'
(integer) 2
127.0.0.1:6379> linsert py4 after '123' 'hello'
(integer) 3
127.0.0.1:6379> lrange py4 0 -1
1) "123"
2) "hello"
3) "abc"
  • 设置指定索引的元素值
  • 索引是基于0的下标
  • 索引可以是负数,表示偏移量是从list尾部开始计数(-1:表示列表的最后一个元素)
获取
  • 移除并且返回key对应的list的第一个元素
lpop key
  • 返回存储在key列表里指定范围内的元素
  • start和end偏移量都是基于0的下标
lrange 键 start stop
其它
  • 裁剪列表,改为原集合的一个子集
ltrim key start stop

裁剪出来,其它的都删除

127.0.0.1:6379> lrange py4 0 -1
1) "h4"
2) "h3"
3) "h2"
4) "h1"
5) "hello"
6) "abc"
127.0.0.1:6379> ltrim py4 1 2
OK
127.0.0.1:6379> lrange py4 0 -1
1) "h3"
2) "h2"
  • 返回存储在key里的list长度
llen key
  • 返回列表里索引对应的元素
lindex key index

set

  • 无序集合
  • 元素为string类型
  • 元素不能重复,唯一
设置
  • 添加元素
sadd 键 值
获取
  • 获取key集合的所有元素
smembers
  • 获取元素个数
scard 
其它
  • 求多个集合的交集
sinter key key1 key2...
  • 差集
sdiff key key1 key2...
  • 并集
sunion key key1 key2...
  • 判断元素是否在集合中
sismember key member

zset

  • sorted set,有序集合
  • 元素为string类型,唯一、不重复
  • 每一个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序
  • 元素的score可以相同
设置
  • 添加
zadd key score member
127.0.0.1:6379> zadd py7 1 hello 5 world 2 123
(integer) 3
获取
  • 获取
zrange key start stop
  • 添加
zcard key    返回元素个数
  • 返回score在min和max之间的成员
zcount key min max
  • 返回成员member的score的值
zscore key member

你可能感兴趣的:(redis)