redis基本元素相关操作

一.字符串

字符串简单设置与获取

// 设置字符串,如果name重名会覆盖内容
set name "N"
//获取字符串
get name
//设置数字
set age 23
//显示该数据库的所有key
keys *

//设置一个字符串并指定他的过期时间,setex相当于set expire
//设置age的值为23,他的过期时间是30秒。30秒后值就会删除
setex age 30 23
//setne相当于set not exist,如果name不存在则创建,存在则不进行操作
setne name "Wangwu"

字符串的简单操作

set name "zhangsan"
//获取字符串的某一部分,输出结果为zhang,
//跟java有点区别,java是[0,4},redis是[0,4]
getrange name 0 4
//输出结果是zhangsan
getrange name 0 -1
//输出结果是zhangsa
getrange name 0 -2

//获取字符串长度
strlen name

//在字符串后面增加内容
append name "HeWangwu"

//替换字符串,从某个起始位置开始替换
//从0开始替换,name会变成huangsan。
setrange name 0 "hu"

//对已存在的字符串设置过期时间,这里设置了 name 30秒后过期
expire name 30

//字符串的自增或者自减,incr自增,decr为自减,步数为1,如果age
//不是integer则报错
set age 23
incr age
decr age
//设置自增步数,设置age的自增部署为5,自减同理
incrby age 5

批量操作

//批量设置值
mset k1 "key1" k2 "key2" k3 "key3"
//批量设置
mget k1 k2 k3

//批量setne操作,只要一个key已经存在,整行代码都会设置失败
msetne k4 "key1" k5 "key2" k6 "key3"

设置对象

//设置了一个person:1的对象
set person:1 {name:"张三",age:23}
get person:1

//设置一个persion:2的对象
set persion:2 {name:{firstName:Wang,secondName:Wu},age:24}
get persion:3

//还可以这样设置
mset person:3:name zhangsan person:3:age 23
//输入keys *就可以看到了新增了 person:3:name 和 person:3:age两个key
keys *
//使用mget批量获取属性
mget person:3:name person:3:age

二.List

redis的List初步理解

redis的List实际上是一个双向链表,可使用List的链表去完成push和pop操作,redis的一些操作方式实际上可以对比一下堆,队列和链表。

redis的相关操作

// 向list里面push元素one,two和three
lpush list "one"
lpush list "two"
lpush list "three"

// 查看list,注意redis中的-1是最后一个元素,-2是倒数第二个元素
lrange list 0 -1
/**
显示顺序为
three
two
one
*/

// 以栈的方式获取list中的元素,获取到的元素为three,list的three被移除
lpop list
// 以队列的方式获取list中的元素,获取到的元素为one,list的one被移除
rpop list

// 在list的尾部添加元素
rpush list "one"
// 在list的头部添加元素
lpush list "three"

//根据下标获取元素,获取到的元素为three
lindex list 0

//获取list的长度,长度为3
llen list

//根据元素value移除元素,rem就是remove,移除list中一个one,如果list有两个one,可以输入lrem list 2 one移除2个one元素,如果n大于one的元素数量,则把所有one都删除
lrem list 1 one

//先以栈的元素pop元素,push到list2,如果list2不存在则新建一个list2
rpoplpush list list2

//根据下标设置元素值,把第一个元素设置成zero,如果元素不存在,报错数组下标越界
lset list 0 zero

//插入元素,链表操作,在two元素前插入2.5,after同理
linsert list before two 2.5

三.Set

redis中的set简单理解

set是无序的,不能重复的,redis中的set也是符合这两个特性的

set的简单操作命令

// 新增set,并向里面添加Huo元素
sadd set Huo
sadd set wei
sadd set zhen

//查看set中的所有元素
smembers set

//判断某个成员在set中是否存在
sismember set Huo

//查看set的元素个数
scard set

sadd set needleHuo
//移除set中的某个元素,如果元素不存在返回0
srem set needleHuo

//随机获取set中的元素
srandmember set
//随机获取set中2个元素
srandmember set 2

//随机提取一个值
spop set
//获取两个值
spop set 2

//把set中的元素移动到set2中
smove set set2 "Huo"

//集合的相关操作,注意,集合运算结果不会对原集合的内容产生影响
//交集
sinter set set1
//差集
sdiff set set1
//并集
sunion set set1

四.ZSet

zset的简单理解

zset实际上跟java中的treeset很像,放进去的元素都会根据权重去排序。zset的操作相交于set的操作,其实也就多了个权重的操作,命令都很类似的,zset的操作相比于set,命令开头都有个s


zset的基本命令

//新建一个zset,并添加一个权重为1的元素one
zadd set 1 one
//向set中添加2个元素,权重分别为2,3
zadd set 2 two 3 three

//查看set中的所有元素,可以看到这些元素都是正序排序的
zrange set 0 -1
//倒序查看set中的所有元素
zrevrange set 0 -1

//显示所有值并显示权重,-inf是负无穷,+inf是正无穷,如果不加withscores就是显示所有
zrangebyscore set -inf +inf withscores
//显示权重在0-5的键,如果不加withscore就不显示权重
zrangebyscore set 0 5 withscores

//移除元素
zrem set one

//查看元素个数
zcard set

//获取在某个区间的权重的键的数量
zcount set 0 5

//差集,2表示两个集合间作差集,3的话表示3个,他们计算是按照顺序的,比如set set1 set2就是先计算set与set1差集,结果再跟set2计算差集,所以他们顺序不一样结果也不一样
zdiff 2 set set1

//交集,同理
zinter 2 set set1


//并集,同理
zunion 2 set set1

五.Hash

hash的简单理解

redis的哈希其实操作跟String很类似,你可以把hash比作java的map<key,value>,redis的hash可以理解成key-Map<K,V>,比字符串的key-String再增加一层,hash很适合用来存对象

hash的简单操作

//新建一个hash,并给他定义一个field1的元素,field1的值为Huo
hset myhash field1 "H"
//设置多个元素
hset myhash field2 "i" field3 "en"

//获取一个元素
hget myhash field1
//获取多个元素
hmget myhash field1 field2

//获取全部数据
hgetall myhash

//删除指定元素
hdel myhash field1

//获取hash长度
hlen myhash

//判断key是否存在
hexists myhash field

//获取所有key
hkeys myhash

//自增自减
hset myhash field3 2
//设置自增步数为2
hincrby myhash field3 
//设置自减不是为2
hincrby myhash field3 -2

//判断字段是否存在,不存在则增加,存在则不做任何操作,如果是批量操作,一个失败则全部失败
hsetnx myhash field1 H field2 w

//新建对象
hset user:1 name zhangsan age 23
//层叠新建对象
hset user:2 name:firstname:zhang
name:secondname:san age 23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值